Принимая во внимание мой провал как функциоанльщика при генерации всех пересатновок, решил начать с чего-то меньшего. Попробую писать на OCaml'е в функциоанльном стиле простые алгоритмы. Результат буду также отправлять на codereview.stackexchange.com.
Вот такой код отправил на очередное [ревью].
let print lst = List.map string_of_int lst |> String.concat " " |> print_endline ;; let rec sort lst = let sorted = match lst with | hd1 :: hd2 :: tl -> if hd1 > hd2 then hd2 :: sort (hd1 :: tl) else hd1 :: sort (hd2 :: tl) | tl -> tl in if lst = sorted then lst else sort sorted ;; let () = let lst1 = [3; 4; 2; 1] in print lst1; sort lst1 |> print; let lst2 = [5; 6; 7; 0; 1; 4; 2; 9; 3; 8] in print lst2; sort lst2 |> print; ;;