我在 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/