関数のネスト
関数呼び出しの結果を、他の関数に渡すこと(関数のネスト、入れ子)で
シンプルな関数を組み合わせて、全体として複雑な処理を簡単に行うことが出来る。
整数のリストを受けとったら、それを昇順にして返す関数(挿入法)
(* 整数リストと整数nを受けとったら、昇順となる位置に整数nを挿入する *) (* insert : int list -> int -> int list *) let rec insert lst n = match lst with [] -> [n] | first :: rest -> if first < n then first :: insert rest n else n :: lst (* 整数リストを受けとったら、昇順にして返す *) (* ins_sort : int list -> int list *) let rec ins_sort lst = match lst with [] -> [] | first :: rest -> insert (ins_sort rest) first (* テスト *) let test1 = ins_sort [2; 4; 6; 8; 1] = [1; 2; 4; 6; 8] let test2 = ins_sort [1; 4; 6; 8; 1] = [1; 1; 4; 6; 8] let test3 = ins_sort [4; 3; 2; 1] = [1; 2; 3; 4;] let test4 = ins_sort [1; 2; 3; 4] = [1; 2; 3; 4;] let test5 = ins_sort [2] = [2] let test6 = ins_sort [] = []