Option型
let compute = Option.fold ~none:"No value" ~some:(fun x -> "The value is: " ^ string_of_int x) let () = let full = Some 42 in let empty = None in print_endline ("compute full -> " ^ compute full); print_endline ("compute empty -> " ^ compute empty)
プログラミング言語と型理論において、Option型(英語: Option type)またはMaybe型(英語: Maybe type)は存在しない可能性のある値をカプセル化して表す多相型(英語版)である。例えば、関数の戻り値が存在する場合と存在しない場合を表すためにこの型は使用される。この型は空またはオリジナルのデータ型Aをカプセルしたコンストラクタから構成されている。
関数型プログラミング以外において、全く異なるが関連する概念としてNullable型がオブジェクト指向プログラミングで一般的である。Option型とNullable型の主な違いは、Option型はネストすることができるのに対して、Nullable型はこれに対応していないことである。
object Main { def compute(opt: Option[Int]): String = opt.fold("No value")(x => s"The value is: $x") def main(args: Array[String]): Unit = { val full = Some(42) val empty = None println(s"compute(full) -> ${compute(full)}") println(s"compute(empty) -> ${compute(empty)}") } }