Я пытаюсь написать функцию, которая фильтрует положительные целые числа из списка целых чисел, возвращая список только отрицательных целых чисел.
Например, если у меня есть список списка, например [[-1; 1]; [1]; [-1; -1]] он вернет [[-1]; []; [-1; -1]].
Я пытался использовать функции фильтрации и преобразования, которые были в моем учебнике.
let rec transform (f:'a -> 'b) (l:'a list) : 'b list =
begin match l with
| [] -> []
| x::tl -> (f x)::(transform f tl)
end
и для фильтра я ранее написал:
let rec filter (pred: 'a -> bool) (l: 'a list) : 'a list =
begin match l with
| [] -> []
| x :: tl -> if pred x then x :: (filter pred tl) else filter pred tl
end
Итак, используя их, я написал
let filter_negatives (l: int list list) : int list list =
transform (fun l -> (filter(fun i -> i<0)) + l) [] l
, но у меня все еще проблемы полное понимание анонимных функций, и я получаю сообщения об ошибках, которые я не знаю, что делать.
Эта функция имеет тип ('a ->' b) -> 'a list ->' b list. Она применяется к слишком многим аргументам; может быть, вы забыли `; '.