0

我想知道哪一种是在 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”的东西,但我看过,它对我来说似乎很先进。

任何帮助表示赞赏!

4

1 回答 1

1

dune完全支持这种开发模式,它提供了dune utop命令,该命令将自动构建您的项目,将其与顶层链接并使用所有可用的模块(和外部依赖项)启动它。

现在,如果您还没有使用沙丘,您可能想知道如何开始使用它。虽然 dune 文档很好而且很详尽,但没有人愿意花几个小时学习 Dune,如果他们唯一想要的就是玩 OCaml。所以这里有一个快速提示,要创建一个准备好运行的 OCaml 代码,请使用dune init,例如,

dune init proj play 

这将创建一个play文件夹,其中包含完整的 OCaml 项目骨架完全可以使用。所以让我们输入它,

cd play

现在我们可以轻松地构建和运行我们的项目,

dune exec play

我们在文件夹中也有play库。lib它是空的,但你可以在那里创建任何文件,它们将在你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 

然后在 utop shell

utop # Play.Say.hello ();;
Hi!
- : unit = ()

那么vscode呢?到目前为止,我们在控制台中玩过,但vscodeocaml-platform一起可以在不离开编辑器的情况下做到这一点。您甚至可以选择代码片段并发送Shift-Enter启用交互式和迭代自下而上开发的顶层(默认键绑定是)。

于 2021-05-05T13:48:06.930 回答