我有这个函数可以检查解析器列表是否有效。我收到错误:EQUALO LPAREN FN。有什么帮助吗?
fun oneOf [] = fn inp => NONE
| oneOf (p::ps) = (fn inp => case parse p inp of
NONE => oneOf ps inp
| SOME (v,out) => SOME (v,out))
答案 0 :(得分:3)
使用fn
定义的函数可以具有多个案例,就像使用fun
定义的函数一样。所以你可以写fun pat1 => exp1 | pat2 => exp2
之类的东西。这意味着当SML解析器在第2行的开头看到|
时,它会认为它属于第1行的fn
,而不是fun
(因为fn
1}}最近来了)。所以当它到达=
时,它会让人感到困惑,因为它期望=>
。
要解决您的问题,请在第1行的fn
周围加上括号。