2008-01-14から1日間の記事一覧

function構文

match式によるパターンマッチを function構文で書くことができる。パターンマッチのための仮引数が現れないのがミソ。 # let rec sum_list = function [] -> 0 | hd::tl -> hd + sum_list tl ;; val sum_list : int list -> int = <fun> # sum_list [1;2;3;4;5;6;</fun>…

List.map

List.map はリストの各要素に関数を適用する。 # List.map (fun x -> x * x) [1;2;3;4;5];; - : int list = [1; 4; 9; 16; 25]実装してみる。 # let rec map' f l = match l with [] -> [] | hd::tl -> f hd :: map' f tl ;; val map' : ('a -> 'b) -> 'a li…

List.fold_left と List.fold_right

List.fold_left は左から,List.fold_right は右からたたみ込む。 # List.fold_left (fun x y -> "(" ^ x ^ "," ^ y ^ ")") "A" ["B";"C";"D"];; - : string = "(((A,B),C),D)" # List.fold_right (fun x y -> "(" ^ x ^ "," ^ y ^ ")") ["A";"B";"C"] "D";;…