0

我有这个函数可以检查解析器列表是否有效。我收到错误: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))
4

1 回答 1

3

用 定义的函数fn可以有多种情况,就像用 定义的函数一样fun。所以你可以写类似fun pat1 => exp1 | pat2 => exp2. 这意味着当 SML 解析器|在第 2 行的开头看到 时,它假定它属于第fn1 行,而不是fun(因为fn最近才出现)。因此,当它到达 时=,它会感到困惑,因为它期望的是=>

要解决您的问题,请fn用括号将第 1 行括起来。

于 2013-02-15T19:50:42.230 回答