【发布时间】:2018-07-09 23:57:33
【问题描述】:
使用 Merlin 2.5.4,在我的项目中打印 OCaml 文件签名的正确方法是什么?例如,假设我有:
(* foo.ml *)
let x = 1
我想得到:
val x : int
什么是正确的命令(或命令序列)?
我尝试过的:
我将文件暂时包装在一个子模块中:module Foo = struct let x = 1 end,然后运行:
$ ocamlmerlin
["type","expression","Foo","at",{"line":1,"col":7}]
但我明白了:
["error",{"start":{"line":1,"col":0},"end":{"line":1,"col":3},"type":"type","sub":[],"valid":true,"message":"Error: Unbound constructor Foo"}]
这是有道理的,因为我实际上并没有提到我正在查询哪个文件,查询 (https://github.com/ocaml/merlin/blob/master/doc/dev/OLD-PROTOCOL.md#type-checking) 也不允许我这样做。
E 我应该提一下,我使用的是 BuckleScript,而不是 ocamlc,而且 ocamlc -i 仅在我指定我的模块及其所有模块依赖项时才有效;我正在寻找能够自动管理这些依赖项的东西。
【问题讨论】:
-
仅供参考,
-i编译器选项显示源的签名,即ocamlc -i foo.ml。 -
@camlspotter 更新了问题以澄清????
-
您可以将您的项目加载到顶层和
#show Foo(或#mod_use "foo.ml"),这将打印签名。 -
@gsg 这不适用于 BuckleScript 模块,因为它们不会被编译为普通的 OCaml 对象文件。
标签: ocaml bucklescript merlin