Как следует из заголовка, я хочу написать функцию, которая принимает список и выражение, которое оценивается как true или false, когда в него передаются элементы списка. Функция должна возвращать список всех элементов, которые не удовлетворяют данному предикату. Тип должен быть 'a list -> ('a -> bool) -> 'a list
, когда он работает правильно.
Это то, что я имею до сих пор,
let rec filter (x: 'a list) pred =
if x = [] then [] else
if x -> pred = true then remove_if (x.tl) pred else
x :: xs remove_if (x.tl) pred ;;
Я попробовал некоторые другие способы написания этого, но в моей ближайшей попытке тип оказался неверно оцененным.