OCaml 循环时出现语法错误
syntax error while loop in OCaml
下面的代码有什么问题?我很难知道什么时候使用';'要么 ';;'或者在 OCaml 中使用 begin end。在这里,我需要读取一些边并插入到图形中,但我需要 link 将其与程序的其余部分一起使用,以便它可以对所有边使用 g(a graph)。
当我这样做时,它说错误:语法错误
let i = ref n in
while !i > 0 do
(
let pair = read_edge Scanning.stdin in
let g = insert_edge (fst pair) (snd pair) g in
i := !i - 1
)
done in (* giving error in this line *)
let rec do_stuff l =
match l with
| [] -> ()
| h::t -> print_int h;do_stuff t in
( * more functions)
in
是 let
语法的一部分(它是 "let" pattern "in" expression
)。 while 循环的语法只是 "while" expression "do" expression "done"
,所以里面没有 in
。
为了编译代码,您可以将 in
替换为 ;
,这样它会执行 while 循环,然后是 let
表达式。然而,在一堆函数定义之间有一个 while 循环对我来说似乎很奇怪。
另请注意,在循环中您执行了 let g = ...
,但您并未在 let
正文的任何位置使用 g
。所以绑定什么也做不了。
下面的代码有什么问题?我很难知道什么时候使用';'要么 ';;'或者在 OCaml 中使用 begin end。在这里,我需要读取一些边并插入到图形中,但我需要 link 将其与程序的其余部分一起使用,以便它可以对所有边使用 g(a graph)。 当我这样做时,它说错误:语法错误
let i = ref n in
while !i > 0 do
(
let pair = read_edge Scanning.stdin in
let g = insert_edge (fst pair) (snd pair) g in
i := !i - 1
)
done in (* giving error in this line *)
let rec do_stuff l =
match l with
| [] -> ()
| h::t -> print_int h;do_stuff t in
( * more functions)
in
是 let
语法的一部分(它是 "let" pattern "in" expression
)。 while 循环的语法只是 "while" expression "do" expression "done"
,所以里面没有 in
。
为了编译代码,您可以将 in
替换为 ;
,这样它会执行 while 循环,然后是 let
表达式。然而,在一堆函数定义之间有一个 while 循环对我来说似乎很奇怪。
另请注意,在循环中您执行了 let g = ...
,但您并未在 let
正文的任何位置使用 g
。所以绑定什么也做不了。