(* 例題ファイル2 *) (* リストを使う *) (* リストの例 *) [] ;; [ ] ;; (* リストの要素の区切りは ; である *) [1; 2; 3] ;; (* リストの要素の区切りを間違えて , を使うと、変なものになる。*) [1, 2, 3] ;; (* これは実は、[ (1,2,3) ];; と入力したのと同じである。*) (* 先頭に要素を追加*) let lst = [1; 2; 3] ;; 0 :: lst ;; 1 :: (2 :: (3 :: lst)) ;; 1 :: 2 :: 3 :: lst ;; [1; 2; 3] = (1 :: 2 :: 3 :: []) ;; (* リストの分解 *) List.hd lst ;; List.tl lst ;; (* リストのパターンマッチ *) let lst = [1; 2; 3] in match lst with [] -> 0 | [x] -> 1 | [x; y] -> 2 | [x; y; z] -> 3 | _ -> -1 ;; let lst = [1; 2; 3] in match lst with [] -> 0 | x::l -> x (* リストに関する再帰関数 *) let rec length lst = match lst with [] -> 0 | x::l -> (length l) + 1 ;; (* length は、いろいろな型を要素としてもつリストに使える [多相的という] *) length [1; 2; 3] ;; length [true; false; true];; length ["a"; "bcd"; "efgh"];; length [[1; 2]; [2; 3; 4; 5]; [6; 7; 8]];; (* リストのリスト *)