我想知道用Ocaml(在MAC中(编程哪种方法是最舒服的。
我目前使用VSCode来检测语法和类型错误,但后来我使用在线解释器进行编译(它创建了ml(并在上面运行示例;我的意思是,实例化变量、测试示例等。例如,我使用在线:https://try.ocamlpro.com/.
我知道这不是最好的方法:例如,如果一个包没有集成(比如说num
(,我就不能执行opam install num
并打开它
因此,我想知道哪一个是一个合适的选择,既可以(1(像VSCode这样的酷接口,也可以(2(动态编译+测试。
我想我已经接近下一个选项了:我在终端中写入ocaml
,然后打开一个模式:
OCaml version 4.10.2
#
#
#
在那里,我可以写:#open Num;; #open List;; #let...
,但我不知道如何在上面加载文件。
有人还告诉我;utop";,但我看了看,它对我来说似乎很先进。
感谢您的帮助!
这种开发模式完全由dune支持,它提供了dune utop命令,该命令将自动构建您的项目,将其与顶级链接,并在所有可用模块(和外部依赖项(的情况下启动它。
现在,如果你还没有使用沙丘,你可能会想知道如何开始使用它。虽然沙丘文档很好,也很全面,但如果他们唯一想玩的就是OCaml,那么没有人愿意花几个小时学习沙丘。因此,这里有一个快速提示,要创建一个准备运行的OCaml代码,请使用dune init
,例如
dune init proj play
这将创建一个play
文件夹,该文件夹将具有完全可使用的OCaml项目骨架。让我们输入它,
cd play
现在我们可以轻松地构建和运行我们的项目
dune exec play
lib
文件夹中还有play
库。它是空的,但你可以在那里创建任何文件,它们将在你的bin/main.ml
和dune utop
中可用,例如,让我们创建一个简单的模块,
(* file lib/say.ml *)
let hello () = print_endline "Hi!"
然后我们可以在我们的可执行文件中使用它
(* file bin/main.ml *)
let () = Play.Say.hello ()
我们可以使用我们的库(例如(在OCaml顶层进行游戏
$ dune utop
然后在autop shell 中
utop # Play.Say.hello ();;
Hi!
- : unit = ()
那么vscode呢?到目前为止,我们是在控制台上玩的,但vscode
和ocaml平台可以做到这一点,而不会让编辑器感到舒适。您甚至可以选择代码片段并发送顶层(默认的密钥绑定是Shift-Enter
(,从而实现交互式、迭代、自下而上的开发。