週末デッドエンド

勉強と日記と怪文書

2021-06-08 Tue.

勉強

プログラミング in OCaml

練習問題 5.5

練習問題の挙動がよくわからないのでトレース。 リストから最初の n 個の値を取り出す再帰関数take

let rec take n l =
  match (n, l) with
    (0, _) | (_, []) -> []
    | (n, x :: rest) -> x :: (take (n - 1) rest);;
take 3 [1; 2; 3; 4] (* match with (3, 1::[2; 3; 4]]) *)
--> 1 :: [take 2 [2; 3; 4]] (* match with (2, 2::[3; 4] *)
--> 1 :: 2 :: (take 1 [3; 4]) (* match with (1, 3::[4]) *)
--> 1 :: 2 :: 3 :: take (0 [4]) (* match with (0, _) *)
--> 1 :: 2 :: 3 :: []

日記

断酒28日目。今日は起きるのが遅かった。