我有返回a' option类型的函数.我的功能看起来像:
let foo(a) = 
   match fooB a.F1 with
   | Some(b) -> match fooC b.F2 with
                | Some(c) -> match fooD c.F3 with 
                             | Some(d) -> match fooE d.F4 with 
                                          // ......
                             | None -> ()
                | None -> ()
    | None -> ()
Run Code Online (Sandbox Code Playgroud)
是否有任何功能模式可以避免这种多层次match expressions?
JLR*_*she 11
看起来像你正在寻找的是Option.bind:
let foo(a) = 
    fooB a.F1 
    |> Option.bind(fun b -> fooC b.F2)
    |> Option.bind(fun c -> fooD c.F3)
    |> Option.bind(fun d -> fooE d.F4)
Run Code Online (Sandbox Code Playgroud)
Option.bind 基本上相当于
// ('a -> 'b option) -> 'a option -> 'b option
let bind f m =
    match m with
    | Some x -> f x
    | _ -> None
Run Code Online (Sandbox Code Playgroud)