Syntax Ocaml语法错误
这个代码怎么了?我想不出来:Syntax Ocaml语法错误,syntax,ocaml,Syntax,Ocaml,这个代码怎么了?我想不出来: let parent (rules : grammar) (symbol1 : string) (symbol2 : string) : (SymbolSet.t) = try SymbolSet.singleton (getParent [symbol1; symbol2] rules) with Not_found -> SymbolSet.singleton "";; let fundementalRule (set1
let parent (rules : grammar) (symbol1 : string) (symbol2 : string) : (SymbolSet.t) =
try
SymbolSet.singleton (getParent [symbol1; symbol2] rules)
with
Not_found -> SymbolSet.singleton "";;
let fundementalRule (set1 : SymbolSet) (set2 : SymbolSet) (rules : grammar) : (SymbolSet) =
allpairs (parent rules) set1 set2;;
Characters 20-21:
let fundementalRule (set1 : SymbolSet) (set2 : SymbolSet) (rules : grammar) : (SymbolSet) =
^
Syntax error: ')' expected, the highlighted '(' might be unmatched
括号是匹配的。那么是什么导致了这个问题呢
这很好:
let fundementalRule set1 set2 rules =
allpairs (parent rules) set1 set2;;
上面的线是什么?我敢打赌,在这段代码之前的某个地方有一个不匹配的paren 更新 我的直觉告诉我错误就在这里:
SymbolSet.singleton (getParent [symbol1; symbol2] rules)
我没有任何方法来测试此代码,但在尝试运行此代码时,我确实遇到了一个错误:
# let foo arg1 listarg arg2 = ();;
val foo : 'a -> 'b -> 'c -> unit = <fun>
# foo (1 [1; 2] 2);;
Error: This expression is not a function; it cannot be applied
可能类型应该是
SymbolSet.t
而不是SymbolSet
SymbolSet
本身不是有效的类型表达式;来自Ocaml编译器的消息不正确,这是因为它使用ocamlyacc(和yacc)的“错误”机制来猜测错误可能是什么。
SymbolSet.singleton getParent [symbol1; symbol2] rules