Option型
OCamlはOptionをパラメータ化された要素型として実装している。Optionは次のように構築及び分解される:
OCamlでは、type 'a option = None | Some of 'aとして定義されている。
Pythonでは、3.10以降でtyping.Optional[T]またはT | Noneとして示される。
Rustでは、enum Option<T> { None, Some(T) }として定義されている。
Scalaでは、final case class Some[+A](value: A)とcase object Noneの型拡張によって、sealed abstract class Option[+A]として定義されている。
Standard MLでは、datatype 'a option = NONE | SOME of 'aとして定義されている。
Swiftでは、enum Optional<T> { case none, some(T) }として定義されているが、通常はT?として記述される。
compute(full) -> The Value is: 42 compute(empty) -> No value
fn compute(opt: Option<i32>) -> String { opt.map_or("No value".to_owned(), |x| format!("The value is: {}", x)) } fn main() { let full = Some(42); let empty = None; println!("compute(full) -> {}", compute(full)); println!("compute(empty) -> {}", compute(empty)); }