0
fold_leftを使用して簡単な挿入ソート関数を書いておきたいと思いますが、私のソートの楽しみの中で順序を指定する関数も渡したいと思います。私は知らない何 、私が話していますが、fold_leftが、その解決策を受け入れていないものをbool関数を引数として渡すfold_leftを使用した挿入ソート
let rec insert f l e =
match l with
| [] -> [e]
| h :: t -> if f e h then h :: insert f t e else e :: l;;
let insertion_sort f l = List.fold_left insert f [] l;;
let less x y = x < y;;
let result = insertion_sort less [2 ; 5 ; 1 ; 9 ; 7 ; -2 ; 0 ; 124];;
この.. fold_leftするためにそれを渡す方法です。 私はsort関数を特殊化するとうまくいきます。
let insertLess = insert less;;
let insertion_sortLess l = List.fold_left insertLess [] l;;
let result = insertion_sortLess [2 ; 5 ; 1 ; 9 ; 7 ; -2 ; 0 ; 124];;
# val result : int list = [124; 9; 7; 5; 2; 1; 0; -2]
Thx ....私はこの1つを試したと思いますが、おそらく私は他のバグを持っています。 –