OCamlでリストを受け取ったらリストの長さを返す関数を作れた
例によって「プログラミングの基礎」サイエンス社刊での問題を解いた。苦し紛れに回答したら当たってた(笑)。再帰の初歩がちょっとできた感じですごくうれしい。ちなみに、パターンマッチの文法が、OCamlはmatch xxx withだが、Elmだとcase xxx ofになる。なんか似ていてElmも同時に理解できそうな気がする。あー、なんかコードサンプルの行頭が左に寄ってしまうので、ActionTextのエディターを導入しないとだな。
(* 目的: 整数のリストを受け取ったらリストの長さを返す *)
(* length : int list -> int *)
let rec length lst = match lst with
[] -> 0
| first :: rest -> length rest + 1
(* テスト *)
let test1 = length [] = 0
let test2 = length [2] = 1
let test3 = length [1; 3] = 2
let test4 = length [1; 3; 5; 7] = 4
let test5 = length [2; 5; 1; 6; 7; 4] = 6
let test6 = length [3; 7; 2] = 3
Posted by tomo
September 19 12:09, 2025