После обсуждения в комментариях я не буду пытаться написать полное решение, но дам вам подсказку о функциях, которые необходимы для того, чтобы это работало.
Если вы ищете Наименьшая разница между последующими числами, тогда вы можете использовать функцию List.pairwise
, которая дает вам список кортежей с последующими числами. Затем вы можете передать это в List.map
, чтобы превратить список кортежей в список различий (вычитая одно из другого) и в List.min
, чтобы найти наименьшее.
> [1;3;5;6] |> List.pairwise;;
val it : (int * int) list = [(1, 3); (3, 5); (5, 6)]
Если вы ищем наименьшую разницу между любыми двумя числами, затем я сначала отсортировал бы список, используя List.sort
, а затем сделал бы то же, что и выше - сортировка списка гарантирует, что числа, которые нужно вычесть, чтобы получить наименьшую разницу, будут рядом друг с другом.