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日目。今日は起きるのが遅かった。