Вы можете попробовать использовать List.filter
. Поскольку вы хотите получить список значений, которые меньше указанного значения, тогда фильтр должен делать то, что вы хотите.
Вот документация для фильтра:
val filter : ('a -> bool) -> 'a list -> 'a list
filter p l returns all the elements of the list l that satisfy the predicate p. The order of the elements in the input list is preserved.
Вам нужно предоставить предикат p. Предикат - это функция, которая принимает элемент и возвращает логическое значение. Фильтр будет принимать этот предикат и применять к каждому значению в списке. Если предикат возвращает true для этого элемента, элемент будет добавлен в итоговый список.
Так что в вашем случае list_below
должно быть
let list_below thresh lst =
List.filter (fun elem -> elem < thresh) lst
Больше операций по списку, посмотрите эту главу в реальном мире OCaml.