Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio code 使用VScode和终端进行OCaml交互开发的实践_Visual Studio Code_Terminal_Ocaml_Utop_Merlin - Fatal编程技术网

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

Visual studio code 使用VScode和终端进行OCaml交互开发的实践,visual-studio-code,terminal,ocaml,utop,merlin,Visual Studio Code,Terminal,Ocaml,Utop,Merlin,我想知道用Ocaml(MAC)编程哪一种方式比较合适 我目前正在使用VSCode来检测语法和类型错误,但随后我使用在线解释器来编译(它创建了ml)并在其上运行示例;我的意思是,实例化变量、测试示例等。例如,我使用在线: 我知道这不是最好的方法:例如,如果一个包没有集成(比如说num),我就不能执行opam安装num并打开它 所以我想知道哪一个是一个合适的选择,既有(1)像VSCode这样的酷接口,又有(2)动态编译+测试的东西 我想我接近下一个选项:我在终端中写入ocaml,然后打开一个模式:

我想知道用Ocaml(MAC)编程哪一种方式比较合适

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

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

所以我想知道哪一个是一个合适的选择,既有(1)像VSCode这样的酷接口,又有(2)动态编译+测试的东西

我想我接近下一个选项:我在终端中写入
ocaml
,然后打开一个模式:

OCaml version 4.10.2
#
#
#

在那里,我可以写:
#opennum#公开名单#让…
但我不知道如何在上面加载文件

有人还告诉我有一种叫做“乌托普”的东西,但我已经看过了,它对我来说似乎很先进


感谢您的帮助

此开发模式完全受以下命令的支持:提供自动构建项目的命令,将其与顶层链接,并使用所有可用的模块(和外部依赖项)启动项目

现在,如果您还没有使用dune,您可能想知道如何开始使用它。尽管dune文档很好,也很全面,但如果他们只想玩OCaml,那么没有人愿意花几个小时来学习dune。下面是一个快速提示,要创建一个准备运行的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 
然后在utop外壳中

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

那么vscode呢?到目前为止,我们在控制台中播放,但是
vscode
与一起可以在不离开编辑器的情况下完成此操作。您甚至可以选择代码片段并发送顶层(默认键绑定为
Shift-Enter
),以实现交互式、迭代、自底向上的开发。

这是一个好问题,但标题具有误导性,因为它看起来像一个典型的“基于意见”的问题,所以我冒昧地将其改写为更直接的风格。我认为这样你会得到更好更有用的答案。但是,当然,如果您认为我的编辑范围太窄,请随时回复/修改。但请记住,这有利于直接提问和直接回答。我现在要回答你的问题:)我唯一的问题是,你在标题中是指“互动”还是“迭代”?它们都适合这个问题:)哈哈)我刚刚创造了一个新词,iteractive用于交互式/迭代开发。但是,是的,我可能是指交互(但考虑了迭代)。请根据您的喜好进行更正,这将使搜索问题变得更容易。首先,非常感谢您的回答!!这个想法正是我想要的。但是,我有一个问题:它无法识别
dune utop
命令(与其他命令一起工作正常),并发送消息:
Library“utop”not found
。我一直在寻找解决方案,但找不到,有什么想法吗?无论如何,再次非常感谢!!(看起来问题已经解决了,但我不同意这个决定)我将从
opam安装utop