Разработка на коленке

"тут должна быть красивая цитата о программировании"

Сортировка пузырьком на OCaml

2016-04-14 13:08

Принимая во внимание мой провал как функциоанльщика при генерации всех пересатновок, решил начать с чего-то меньшего. Попробую писать на 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;
;;