12. 定義したら使える構文一覧
{ let hoge = … in … }
{ let! hoge = … in … }
{ return hoge }
{ return! hoge }
{ yield hoge }
{ yield! hoge }
{ use hoge = … in … }
13. 定義したら使える構文一覧
{ use! hoge = … in … }
{ If pred then … else … }
{ If pred then … }
{ while pred do … }
{ for … in … do … }
{ try … with … }
{ try … finally … }
その他いくつか
28. 例: Option(Maybe、Optional)型用に
定義
type OptionBuilder() =
member this.Return(x) = Some x
member this.ReturnFrom(x: _ option) = x
// Someならfを適用してSomeに包む、Noneならそのまま
member this.Bind(x, f) = Option.bind f x
member this.Zero() = None
let option = OptionBuilder()
29. 使ってみる
let div x y =
option {
let! x = x
let! y = y
if y <= 0 then return x / y
}
div (Some 4) (Some 2) // = (Some 2)
div (Some 1) (Some 0) // = None