7.19 式の組み合わせの原則
MLプログラミングの原則は,式を組み合わせていくことでしたが,もち ろんどのような組み合わせでも許されるわけではありません. MLでは,プログラムを構成する際,以下の基本原則に従います.
式は型が正しい限り自由に組み合わせることができる
リストの場合を例にこの原則を考えてみましょう. リストは,その要素の型に制限はありません. どのような値であれ,同じものは同一のリストにすることができます. 以下の対話型セッションは,様々な型のリストを構築しています.
# fact 4 :: 4 + 4 :: (if factorial 1 = 0 then nil else [1,2,3]);
val it = [24, 8, 1, 2, 3] : int list
# [1.1, Math.pi, Math.sqrt 2.0];
val it = [1.1, 3.14159265359, 1.41421356237] : real list
# "I"::"became"::"fully"::"operational"::"on"::"April 2, 2012"::nil;
val it = ["I", "became", "fully", "operational", "on", "April 2, 2012"] : string list
# [factorial, fib];
val it = [fn, fn] : (int -> int) list
# [#"S", #"M", #"L", #"#"];
val it = [#"S", #"M", #"L", #"#"] : char list
# implode it;
val it = "SML#" : string
# explode it;
val it = [#"S", #"M", #"L", #"#"] : char list
implodeとexplodeはそれぞれ文字のリストを文字列に変換する関数お よび文字列を文字のリストに変換する関数です.