F# で Maybe できたよーーー

ʕ•͡ω•ʔ Haskell の何かを F# で書くと楽しいんじゃ(天才博士風)

というわけで、実装して覚えるシリーズ。

型の定義がこちら:

type Maybe<'a> =
  | Nothing
  | Just of 'a

F# 風にするなら、Maybemaybe にするべきかも。

ゆかいな Maybe 関連の関数:

let maybe a f m =
  match m with
    | Just x     -> f x
    | Nothing    -> a

let isJust m =
  match m with
    | Nothing    -> false
    | Just _     -> true

let isNothing m =
  match m with
    | Nothing    -> true
    | Just _     -> false

let fromJust x =
  match x with
    | Nothing    -> failwith "Maybe.fromJust: Nothing"
    | Just x     -> x

だけど、F# には option というのが既にあるので、そっちを使いましょう。