Я написал этот метод, который дал число, и список вернет новый список с номером, вставленным в список в правильной позиции на основе его значения.(Я делаю сортировку вставкой.)
let rec insertinto number numbers =
match numbers with
| [] -> [number]
| head::tail -> if head > number then number::numbers else head::(insertinto number tail)
F # предполагает тип этого метода:
val insertinto : 'a -> 'a list -> 'a list when 'a : comparison
Если я тестирую этот метод с
[4; 10; 15] |> insertinto 12
Я получаю
val it : int list = [4; 12; 10; 15]
Что явно не так.Сравнение 'head> number' не работает правильно.
Чтобы заставить его работать, я должен указать тип параметра чисел:
let rec insertinto number numbers: int list =
Тогда все это работает, но яЯ не хочу использовать список int все время, я хочу, чтобы это работало с любым типом списка.Пока тип реализует сравнение, он, безусловно, должен работать.
Почему это работает со списком int, а не с общим списком?Чего мне не хватает?
edit
ок, похоже, проблема только в моно.