List.filter函数在SML / NJ中不起作用

时间:2014-02-19 03:47:42

标签: sml smlnj ml

我正在构建一个简单的函数,以便从item ...

中删除List1
fun Strip(item, List1) = filter (fn x => x <> item) List1;

输入:

Strip(3,[1,2,3,4,3]);

错误:

Error: Unbound variable or constructor: Strip

替代输入:

filter (fn x => x <> 5) [1,3,5,2,5];

替代错误:

stdIn:1.2-1.8 Error: unbound variable or constructor: filter

为什么这么简单的功能无效?

1 个答案:

答案 0 :(得分:2)

对于错误消息“unbound variable or constructor:filter”,在这种情况下,它意味着在顶层环境中不存在标识符“filter”。由于filter在结构List中定义,因此您必须先使用List.filter,或在使用open List之前发出语句filter。例如,

List.filter (fn x => x <> 5) [1,3,5,2,5];

open List;
filter (fn x => x <> 5) [1,3,5,2,5];

至于使用Strip时的错误,您确定Strip的定义是否成功且没有错误?如果您尝试使用代码显示的filter,并且解释程序找不到它,则Strip的定义应该失败。