syntax-error - 顶级OCaml双分号错误

标签 syntax-error ocaml

我在 OCaml 顶层收到这个奇怪的语法错误。

# #use "ex_8_4.ml";;
type blob = {
  get : unit -> float * float;
  area : unit -> float;
  set : float * float -> unit;
  move : float * float -> unit;
}
val new_rectangle : float -> float -> float -> float -> blob = <fun>
# let rect1 = new_rectangle 0.0 0.0 1.0 1.0 in  
  let rect2 = {rect1 with set = (fun _ -> ())};;
Error: Syntax error

复制未能包括错误中的分号带下划线。

最佳答案

发生这种情况是因为顶层期望 in关键字而不是分号:

> let a = 1 in let b = 2;;
Error: Syntax error

一种解决方法是添加 in在末尾:
> let a = 1 in let b = 2 in a + b;;
- : int = 3

但最简单的方法是用分号结束每个 let 绑定(bind):
> let a = 1;;
val a : int = 1
> let b = 2;;
val b : int = 2
> a + b;;
- : int = 3

关于syntax-error - 顶级OCaml双分号错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44494200/

相关文章:

linux - Linux 有没有好的 "OCaml Browser"工具?

eclipse - Eclipse AJDT-Java方面类上的错误消息 “This method must return a result of type int”

recursion - Dr Racket 中的 Lambda 递归

php - 在另一个类的另一个文件中调用php类

types - 是否可以使用类型注释绕过值限制?

OCaml `Map.Make` 输入模块

php - PHP解析/语法错误;以及如何解决它们

vb.net - “文本”不明确-错误(vb.net)

OCaml 创建斐波那契数列

python - 满足这个标准的语言?