Я пытаюсь написать функцию выбора более высокого порядка, которая выбирает элементы, которые функция f выводит как true, а затем выводит их значения в список.
например:
#let f a = if a>8 then true else false;;
pick [1;3;4;9;12;22] f;;
- : int list = [9;12;22]
Я написал этот код, но он не работает:
let rec pick f list =
let p1 = f list in
if (List.hd(p1)==true)
then List.hd(p1)::pick List.tl(p1)
else pick List.tl(p1)
Ошибка: это выражение имеет тип 'список
но ожидалось выражение типа 'b -> bool #
Как я могу исправить это, чтобы оно работало со списками?