Как сделать функцию в OCaml, которая принимает список и предикат, а затем возвращает элементы, которые не удовлетворяют предикату? - PullRequest
0 голосов
/ 01 марта 2020

Как следует из заголовка, я хочу написать функцию, которая принимает список и выражение, которое оценивается как 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 ;;

Я попробовал некоторые другие способы написания этого, но в моей ближайшей попытке тип оказался неверно оцененным.

1 Ответ

0 голосов
/ 01 марта 2020

Вот кое-что, с чего можно начать ..

let rec filter f lst =
  match lst with
  | [] -> []
  | hd::tl ->
    if (f hd)
    (*The rest of the function goes here*)
...