SML/NJ Напишите функцию фильтра, которая принимает анонимную функцию в качестве аргумента.

Меня просят написать функцию фильтра в 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 я часами застрял в этой функции,

Мне интересно, как передать второй аргумент первому аргументу.


person Node.JS    schedule 24.02.2014    source источник


Ответы (1)


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

Я не совсем уверен, что вы имеете в виду, говоря о передаче второго аргумента первому аргументу.

person qaphla    schedule 24.02.2014