type Option = Some(T) | None type Ord = LT | EQ | GT fn map(input: Option, func: Func): Option { if input { is Some(x) -> Some(func(x)), is None -> None, } } type Complicated = Sunrise | Metal { black: bool, norwegian: bool } | Fella(String, Int)