【问题标题】:typerex 1.0.1 with ocaml 3.12.1 and emacs, no cmt(i) file foundtyperex 1.0.1 与 ocaml 3.12.1 和 emacs,找不到 cmt(i) 文件
【发布时间】:2013-05-27 14:27:08
【问题描述】:

是否有人设法让当前版本的 typerex(我猜是 1.0.1)适用于 ocaml

根据 typerex 的网站 (http://www.typerex.org/manual-index.html) 我应该在 myocamlbuild 文件中添加一行,

Options.ocamlc := S [ A "ocp-ocamlc"]

,我确实喜欢这样:

let _ = dispatch & function
  | Before_options ->
      (* Set up to use ocamlfind *)
      Options.ocamlc     := S [ A "ocp-ocamlc"]

但我仍然遇到同样的问题。

如前所述,我的 .typerex 文件指向我的 _build,因此 CMT _build(这是该文件中目前唯一存在的内容)。

我开始怀疑,因为显然 cmt 文件仅在 ocaml 4.0.0 或类似的版本中受支持(在某处阅读),所以我在某处得到了错误的版本(我不这么认为,但这当然不能证明任何事情)。 网站上的文档有点稀疏,支持选项卡会立即转发到 stackoverflow,所以我想我在这里......

卡斯帕

【问题讨论】:

  • 是的,.cmt 文件是通过 OCaml > 4.00.0 版本中的 -bin_annot 标志编译的。在以前的版本中,-annot-dtypes 标志以不同的格式生成类型信息。我还没有处理过typerex 知道如何启用和解析这些格式。
  • 那么我认为版本有问题的假设是正确的吗?根据他们的网站,我拥有的版本应该取决于 ocaml 3.11.+,我有 3.12,所以它应该根据我的工作。所以,或者错误信息是错误的或者他们的文档是错误的,基本上......

标签: ocaml typerex


【解决方案1】:

.cmt 文件由 OCaml 从 4.00 版本开始生成。我相信 Typerex 的早期版本提供了一个特别修改的 OCaml 编译器版本,它集成了 -bin-annot 分支,早在 4.00 版本之前——-bin-annot 正是在 OCamlPro 为 Typerex 的需要而开发的。

Typerex 2 将显着不同的原因是 Typerex 之前/现在的设计使其部署起来过于繁重,并且如您所见,难以配置。在等待更完善的第二个版本时,您可以使用以下非常好的工具:

  • Merlin 是一个年轻的程序,它从正在编辑的 OCaml 缓冲区(因此只有部分正确的来源)增量提取语法和输入信息,以便提供早期错误反馈,输入 -感知完成等。它为 Vim 和 Emacs 提供了编辑器模式(现在 Vim 更加完善),我相信它是正确的答案解决在部分完成的源上获取增量信息的问题-- 在这方面它会比 Typerex 做得更好。

  • ocamlspot 是一个分析完整 OCaml 源文件并提供语义信息的程序,目前主要是定义点信息。从 4.00 开始,它依赖于-bin-annot 机器,因此非常容易安装和部署(它以前与 4.00 之前的 Typerex 有很多相同的问题)。它也可以在 Emacs 和 Vim 中使用(但这次 Emacs 界面看起来更加精致)。

这些工具的组合不会为您提供 Typerex 现有或承诺的所有功能(特别是没有太多可重构的功能),但它们依赖于可靠的设计,并且随着时间的推移可能会很好地发展。

【讨论】:

  • 那么,只要我们不迁移到 ocaml 4,就不会有很多类似 ide 的功能吗?因为迁移显然不是一种选择......
  • 我怀疑 Merlin 将与 4.00 之前的版本一起工作,但在某种意义上会稍微退化:它报告的警告和错误将对应于 4.00 的警告和错误(它目前嵌入了 4.00 类型检查器)。您仍然可以在旧版本的代码上运行它(OCaml 保持向后兼容性)。 Merlin 的源代码将使用 3.12 构建。如果您开始这样做,您应该通知 Merlin 开发人员(他们的 bugtracker 上的一个问题),以便他们知道此工作流程存在并考虑保留它。
猜你喜欢
  • 2012-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多