【发布时间】:2018-04-23 23:01:16
【问题描述】:
我正在尝试在不使用filter 的情况下以 sml 对过滤器定义进行编码。我几乎让代码工作了。当 x 不是 if 语句的返回值。
这是我的代码:
fun Filter[] = [] | Filter(x::xs) =
let
fun lessthan x = if x < 5 then x else 0
in
lessthan(x)::Filter(xs)
end;
【问题讨论】:
-
欢迎来到 Stack Overflow!当问题陈述很简单时,很难提供解决方案"it doesn't work"。请edit您的问题更完整地描述您预期会发生什么以及这与实际结果有何不同。请参阅 How to Ask 以获取有关什么是好的解释的提示。
-
如果您尝试“对过滤器定义进行编码”,那么为什么要在特定谓词 (
x < 5) 中进行硬接线?filter函数的用途不止是返回列表中少于 5 个的元素。List.filter具有fn : ('a -> bool) -> 'a list -> 'a list类型,但您似乎正在尝试创建int list -> int.list类型的函数。