第一个OCaml程序
编辑教程第一个OCaml程序
例
此示例假定您已安装OCaml 。
编译OCaml代码
创建一个名为hello.ml的新文件,其中包含以下内容:
print_string "Hello world!\n"
ocamlc是OCaml编译器。要编译并运行此脚本,请运行
$ ocamlc -o hello hello.ml
然后执行生成的二进制文件
$ ./hello
Hello world!
执行OCaml代码
您也可以运行此脚本,而无需将其编译为二进制文件。您可以通过使用ocaml ,ocaml是允许交互式使用OCaml的ocaml顶级系统。在你的shell中,只需运行即可
$ ocaml hello.ml
Hello world!
在REPL中
打开一个新shell,然后键入ocaml以打开顶层系统。进入会话后,您可以键入相同的程序:
OCaml version 4.02.1
# print_string "hello world!\n";;
按enter键评估表达式,然后触发打印。
hello world!
- : unit = ()
成功!我们看到它打印了hello world! ,但是- : unit = ()是什么? OCaml没有语句,一切都是一个表达式,可以计算某些类型的值。在这种情况下, print_string是一个函数,它接受一个string作为输入,并返回一个unit 。将unit视为只能获取一个值的类型, () (也称为unit),并表示不返回任何有意义值的已完成计算。
在这种情况下, print_string还具有将接收到的字符作为输入放在屏幕上的副作用,这就是我们看到第一行的原因。
要退出REPL,请按ctrl+D
作为Unix脚本
我们有两种方法来创建OCaml脚本。第一个使用系统顶层(由包管理器提供,如apt-get ),第二个使用OPAM提供的顶层。
使用系统顶级 打开你最喜欢的编辑器,然后写:
#!/usr/bin/ocaml
print_string "hello worlds!\n";;
之后,您可以使用chmod +x your_file.ml ./your_file.ml , ./your_file.ml使用./your_file.ml执行脚本。
使用OPAM提供的顶层
#!/usr/bin/env ocaml
print_string "hello worlds!\n";;
最大的区别在于你的顶级版本。实际上,如果您使用特定交换机(如opam switch 4.03.0 )配置OPAM,则脚本将使用OCaml 4.03.0。在第一种方式中,例如在Debian Sid中,脚本将使用OCaml 4.02.3。
您可以用#!/usr/bin/env utop替换shebang来使用utop而不是vanilla toplevel。
UTOP
utop是另一个ocaml toplevel发布 - 这意味着,你需要下载并安装utop (简单的方法是使用OPAM: opam install utop )。 utop具有许多功能,如历史,完成和交互式线编辑。
所以,如果你想要一个简单的方法来尝试一些ocaml代码, utop是最好的。
为什么utop而不是ocaml ?
如果你想要一个像上面这样的ocaml脚本, utop和ocaml没有太大的区别。但是OCaml社区中常见的事情是使用utop而不是ocaml 。
事实上, ocaml REPL由ocaml分布提供。因此,此REPL遵循编译器的发布周期,如果您需要一些额外功能,则需要等待下一版本的编译器。正如我们所解释的那样, utop不在发行版中,所以发布周期不受编译器的约束,如果你想要一个额外的功能,你将更有可能尝试在utop推送这个功能而不是ocaml :)!
对于这一点(以及历史特征),ocaml社区中的大多数人更喜欢使用utop不是ocaml 。
选择支付方式:
备注:
转账时请填写正确的金额和备注信息,到账由人工处理,可能需要较长时间