【问题标题】:Unbound variable or constructor未绑定的变量或构造函数
【发布时间】:2015-02-04 12:36:56
【问题描述】:

我在用 let,in,end 定义柯里化函数时遇到问题。 我有以下代码:

filter_many listOfFunc listOfElements = 
let
    fun allPredicate(element,[]) = true
        |   allPredicate(element,(a,b)::xs) = a(element) andalso (allPredicate(element,xs))
    fun isPredicateAux(element) = allPredicate(element,listOfFunc)
in
    List.filter isPredicateAux listOfElements
end;

这个想法是获取一个元素列表和一个元组列表 (a,b),而 a 是一个谓词函数。 (fn 'a=> 布尔值)。 该函数将返回 listOfElement 中对 ListOfFunction 中的所有谓词返回 true 的所有元素。 请忽略ListOfFunctions中每个元组的第二个变量,以备后用。

在尝试运行这段代码时,我收到以下错误:

stdIn:123.54-123.64 Error: unbound variable or constructor: listOfFunc
stdIn:125.30-125.44 Error: unbound variable or constructor: listOfElements
stdIn:1.1-106.11 Error: unbound variable or constructor: filter_many
stdIn:106.12-106.22 Error: unbound variable or constructor: listOfFunc
stdIn:106.23-106.37 Error: unbound variable or constructor: listOfElements

我似乎无法理解导致此问题的原因。使用它们的人应该看到所有的函数和变量。我在这里错过了什么?

谢谢。

【问题讨论】:

    标签: sml smlnj


    【解决方案1】:

    你忘了在你的函数声明前面写fun

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-12
      • 2017-12-09
      • 2011-06-06
      • 1970-01-01
      相关资源
      最近更新 更多