【发布时间】:2017-12-09 11:44:37
【问题描述】:
我编写了一个方法来返回列表中满足函数的第一个元素(通过柯里化传入)。该函数根据元素是否满足条件返回 NONE 或 SOME。我正在使用模式匹配 但是,我遇到了可怕的错误: 错误:未绑定的变量或构造函数:my_function
我是 SML 的新手,我发现最难的事情之一就是理解错误消息。根据以前对该消息的经验,我认为问题在于 my_function 永远不会返回,但我无法在这里看到逻辑问题。有人可以快速查看并告诉我问题吗?当没有满足输入函数 f 的元素时,我提出错误的问题是什么?
我对出了什么问题感兴趣,也许更重要的是,当您看到此类错误时,有什么方法可以获取更多信息?
val my_function = fn f => fn lst => (* Notice currying *)
case lst of
[] => raise NoAnswer (* Get here is nothing in lst saf
| x::xs => case f(x) of NONE => ( my_function f xs)
| SOME y => x
val test = my_function(fn x => if x < 3 then SOME x else NONE) [1,2,3,4] = 2
谢谢,戴夫
【问题讨论】: