JSRUN 用代码说话

第一个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 。

JSRUN闪电教程系统是国内最先开创的教程维护系统, 所有工程师都可以参与共同维护的闪电教程,让知识的积累变得统一完整、自成体系。 大家可以一起参与进共编,让零散的知识点帮助更多的人。
X
支付宝
9.99
无法付款,请点击这里
金额: 0
备注:
转账时请填写正确的金额和备注信息,到账由人工处理,可能需要较长时间
如有疑问请联系QQ:565830900
正在生成二维码, 此过程可能需要15秒钟