【问题标题】:(sml) Syntax error?(sml) 语法错误?
【发布时间】:2013-01-31 20:26:21
【问题描述】:

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

【问题讨论】:

    标签: types functional-programming sml


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2017-11-20
      • 2011-05-12
      • 2013-01-10
      • 1970-01-01
      • 2015-04-10
      • 1970-01-01
      • 2015-06-01
      • 2021-11-06
      • 2015-03-23
      相关资源
      最近更新 更多