List.append

List.append は2つのリストを連結する。

# List.append [1;2;3] [4;5;6];;
- : int list = [1; 2; 3; 4; 5; 6]

実装してみる。

# let rec append' l1 l2 =
match l1 with
[] -> l2
| hd::tl -> hd :: append' tl l2
;;
val append' : 'a list -> 'a list -> 'a list = <fun>
# append' [1;2;3] [4;5;6];;
- : int list = [1; 2; 3; 4; 5; 6]

リストの連結は中置演算子 @ でもできる。

# ['a';'b';'c'] @ ['d';'e';'f'];;
- : char list = ['a'; 'b'; 'c'; 'd'; 'e'; 'f']

reverse

reverse はリストを逆順にする。

# let rec reverse l =
match l with
[] -> []
| hd::tl -> (reverse tl) @ [hd]
;;
val reverse : 'a list -> 'a list = <fun>
# reverse [1;2;3;4;5];;
- : int list = [5; 4; 3; 2; 1]