Стандартный OCaml List.filter не имеет параметра ~f:
. Скорее всего, вы используете Core.
У меня сейчас нет Core, поэтому я не могу проверить. Но одна из возможных проблем заключается в том, что вы используете body
в вызове List.map
. Я думаю, вы должны оставить это. Вы хотите обработать результат выражения List.filter
. Вы не хотите обрабатывать тело, которое является исходным значением из совпадения.
Вот аналогичное выражение, использующее версии функций стандартной библиотеки OCaml:
# ListLabels.filter [1; 2; 3; 4]
~f: (fun x -> x mod 2 = 0) |>
ListLabels.map ~f: (fun x -> x + 10) ;;
- : int list = [12; 14]