Наиболее подходящей функцией является filter
in Список модулей .Посмотрите на его подпись и описание:
val filter : ('a -> bool) -> 'a list -> 'a list
filter pl возвращает все элементы списка l, которые удовлетворяют предикату p.Порядок элементов в списке ввода сохраняется.
вы должны знать, как предоставить предикат для проверки нечетных целых чисел, как четко описано в вашем вопросе.
Еще одно менее изящное решениеis:
- Просто выполните итерацию по списку и используйте список аккумуляторов для сбора результатов.
- Если элемент является нечетным целым числом, добавьте его к аккумулятору.
- Поменяйте местами аккумулятор, чтобы получить правильный порядок.
Это решение включает в себя List.fold_left
для накопления результатов и List.rev
для обращения к списку.
Поскольку вы спрашиваете толькофункции подходящие, надеюсь, вы сможете использовать их самостоятельно.
РЕДАКТИРОВАТЬ:
Поскольку вы поделились своей попыткой на List.filter
, вот один из способовиспользуйте его:
let odds xs = List.filter (fun x -> x mod 2 <> 0) xs
Чтобы иметь возможность продвинуться дальше с OCaml, пожалуйста, уделите некоторое время, чтобы прочитать руководство по OCaml. Вики-тег OCaml содержит множество полезных ресурсов для начала работы.