为什么我不能用tuareg模式的C-c C-e命令评估这个OCaml系列?

时间:2011-04-23 23:42:14

标签: ocaml tuareg

背景:我使用的是Emacs 23.3,OCaml 3.12.0和tuareg 1.45.7。

我正在查看Hickey OCaml book,并尝试在pg上运行示例。本书的157,.pdf的167。问题出现在表达式

type ’a blob = < draw : unit; .. > as ’a

当我在tuareg模式下输入我的emacs缓冲区,并尝试使用C-c C-e对其进行评估时,我在caml toplevel中收到以下错误:

# type 'a blob = < draw : unit; .. > as ';;
Characters 39-41:
  type 'a blob = < draw : unit; .. > as ';;
                                         ^^
Error: Syntax error

注意最终a如何不出现在发送到顶层的命令中。如果我直接在顶层输入线条,它就可以正常工作:

# type 'a blob = < draw : unit; .. > as 'a;;
type 'a blob = 'a constraint 'a = < draw : unit; .. >

所以我的问题是:为什么这不起作用,我该如何解决?更新tuareg似乎不是一个选项:我尝试使用tuareg版本2.0,但这甚至不能正确加载。

更新:截至12/8/12,这已在tuareg SVN中继中修复。我不认为他们已经使用修复程序更新了版本,但您可以使用

匿名获取主干
svn checkout svn://svn.forge.ocamlcore.org/svn/tuareg/trunk

牢记关于开发版本与发布版本的常见警告。

1 个答案:

答案 0 :(得分:3)

这是图阿雷格的一个错误。由于某种原因,他无法正确计算短语的结尾。要解决它,有两种可能性:

  • 将您的类型括在括号中:type 'a t = (<..> as 'a)有效

  • 手动将其发送到顶层:复制该行,将其粘贴到顶层缓冲区中,然后添加;;(在顶层中使用短语分隔符,在可以推断时在源代码中为可选项)。 / p>

编辑:似乎是错误has been reported upstream。希望他们迟早能解决它。