这段代码有什么问题?我无法弄清楚:
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;;
答案 0 :(得分:1)
上面的内容是什么?我愿意打赌在这段代码之前某处有一个无与伦比的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.singleton getParent [symbol1; symbol2] rules
答案 1 :(得分:1)
类型应该是SymbolSet.t
而不是SymbolSet