SML / NJ编写一个过滤函数,它将匿名函数作为参数

时间:2014-02-24 01:47:02

标签: sml smlnj ml

我被要求在SMLNJ中编写过滤函数

filter:  ('a  ->  bool)  *  'a  list  ->  'a  list

将函数f和列表L作为参数并返回一个新列表 包含L的元素l,使得f(l)为真。

例如:

filter(fn(x  =>  x  mod  3  =  0),  [1,2,3,4,5,6,7,8,9,10])
returns  [3,  6,  9]

由于缺乏ML的文档,我在这个功能上被困了几个小时,

我想知道如何将第二个参数传递给第一个参数。

1 个答案:

答案 0 :(得分:4)

fun filter (f, []) = []
  | filter (f, x::xs) = if f x
                        then x::(filter (f , xs))
                        else filter (f , xs);

我不确定你将第二个参数传递给第一个参数是什么意思。