ocaml模块和程序在同一个文件中

时间:2016-03-24 02:43:50

标签: module ocaml

是否可以在ocaml中有一个INSERT文件,该文件提供了从另一个文件中使用的函数,但也可以用作独立程序?

让我用一个例子来澄清。在Python中,您可以这样做:

.ml

现在,我可以将上述内容作为独立程序运行:#This file is square.py def my_square(i) : print "square of %d is %d" % (i,i*i) if __name__ == '__main__' : my_square(10) 但我也可以通过说python square.py来访问import square函数,从另一个文件中包含它。

如何(如果可能的话)如何在ocaml中执行此操作?
谢谢!

2 个答案:

答案 0 :(得分:1)

模块可以在OCaml中包含有效的表达式,但是没有像Python示例那样条件化它们的干净方法。实现相同效果的最合理方法可能是将条件代码移动到另一个模块中并将其用作您的程序。

这可以像将程序部分包装在run函数中并在另一个模块中调用它一样简单。这样做的好处是,任何模块内部的使用都不需要更改接口(除了公开run)。

答案 1 :(得分:1)

OCaml的字面翻译将是:

 let my_square x = x * x

 let () = 
   if Sys.argv.(0) = "square" then
      print_int (my_square 10)

OCaml中没有神奇的__main__名称,但您可以模仿它。如果只是链接,该模块将提供my_square功能。但如果程序名称为"square",则会打印my_square(10)的结果。