Ocaml语法错误

时间:2009-11-07 21:17:26

标签: 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 : 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;;

2 个答案:

答案 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