首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用OCaml和终端进行VScode交互开发的实践

使用OCaml和终端进行VScode交互开发的实践
EN

Stack Overflow用户
提问于 2021-05-05 09:02:50
回答 1查看 347关注 0票数 0

我想知道哪一种是在Ocaml (在MAC中)编程的一个舒适的方式。

我目前正在使用VSCode来检测语法和类型错误,然后使用在线解释器进行编译(它创建ml)并在其上运行示例;我的意思是实例化变量、测试示例等。例如,我使用了online:https://try.ocamlpro.com/

我知道这不是最好的方法:例如,如果一个包没有集成(比如num),我就不能做opam install num并打开它。

因此,我想知道有哪种选择是合适的:(1)像VSCode这样的酷界面和(2)动态编译+测试。

我想我已经接近下一个选择了:我在终端中写ocaml,然后打开一个模式:

代码语言:javascript
复制
OCaml version 4.10.2
#
#
#

..。

在那里,我可以写:#open Num;; #open List;; #let...,但我不知道如何在上面加载文件。

还有人告诉我,有一种叫"utop“的东西,但我已经看过了,而且它对我来说似乎很先进。

任何帮助都是非常感谢的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-05 13:48:06

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

现在,如果您还没有使用沙丘,您可能想知道如何开始使用它。虽然沙丘文档是好的和彻底的,但是没有人愿意花几个小时学习沙丘,如果他们只想玩OCaml的话。下面是一个快速提示,要创建一个可以运行的OCaml代码,可以使用dune init,例如,

代码语言:javascript
复制
dune init proj play 

这将创建一个play文件夹,使完整的OCaml项目框架完全可以使用。所以我们进去吧,

代码语言:javascript
复制
cd play

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

代码语言:javascript
复制
dune exec play

我们还在play文件夹中有lib库。它是空的,但是您可以在那里创建任何文件,它们在bin/main.mldune utop中都是可用的,例如,让我们创建一个简单的模块,

代码语言:javascript
复制
(* file lib/say.ml *)

let hello () = print_endline "Hi!"

然后我们可以在我们的可执行文件中使用它,

代码语言:javascript
复制
(* file bin/main.ml *)

let () = Play.Say.hello ()

我们可以和我们的图书馆一起玩OCaml游戏,例如,

代码语言:javascript
复制
$ dune utop 

然后在utop壳里

代码语言:javascript
复制
utop # Play.Say.hello ();;
Hi!
- : unit = ()

那么vscode呢?到目前为止,我们在控制台上玩,但是vscode奥卡姆-平台一起可以做到这一点,而不会给您的编辑器留下舒适。您甚至可以选择代码片段并发送toplevel (默认的键绑定是Shift-Enter),以支持交互式和迭代式的自下而上的开发。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67398198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档