読者です 読者をやめる 読者になる 読者になる

一人 OCaml 勉強会 #4 リストとパターンマッチ(1)

OCaml のリストは何でもかんでも入れられるわけじゃなくて決められたモノしか入らないのか。

# [3; 9; 0; 10];;
- : int list = [3; 9; 0; 10]
# let oddnums = [3; 9; 253];;
val oddnums : int list = [3; 9; 253]
# let boollist = true :: false :: [];;
val boollist : bool list = [true; false]
# [1; 2; 3] :: [[4; 5]; []; [6; 7; 8]];;
- : int list list = [[1; 2; 3]; [4; 5]; []; [6; 7; 8]]
がおもしろい。cons オペレータというらしい。

同じ方しか入らないリストが今後どう生きるのか知りたいところ。

パターンマッチ

# let sum_list3 ([x; y; z]) = x + y + z;;
Warning P: this pattern-matching is not exhaustive.
Here is an example of a value that is not matched:
[]
val sum_list3 : int list -> int = <fun>
# sum_list3 [];;
Exception: Match_failure ("", 1, 14).
# sum_list3 [2; 3];;
Exception: Match_failure ("", 1, 14).
# sum_list3 [1; 2; 3];;
- : int = 6

明日は match with かな。