使用VS代码和终端进行OCaml交互式开发的适当实践



我想知道用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.mldune 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(,从而实现交互式、迭代、自下而上的开发。

相关内容

  • 没有找到相关文章

最新更新