Мне нужно написать функцию, которая возвращает true, если данный список отсортирован в порядке возрастания. Пустой и 1-элементный списки отсортированы. Кроме того, [5,12,12] должно возвращать true.
Я написал функцию, которая работает:
let rec isSorted (l: int list) =
match l with
| [] -> true
| [x] -> true
| [x;y] -> x <= y
| x::y::xr -> if x > y then false else isSorted([y] @ xr);
Но, похоже, это немного не так ... Я думаю, что должен быть более простой способ сделать это? Ненавижу, что должен соответствовать 4 случаям, но я не могу понять, как сделать это умнее.
Есть ли лучшие решения?