F#高阶函数解密

时间:2013-10-10 06:59:55

标签: f# higher-order-functions

my last question

之后
let safeInput:Map<'a,'b> option -> 'a -> 'b -> Map<'a,'b> option = fun x y z ->
    match x with
    | Some d -> Some(d.Add(y,z))
    | None -> Some([y,z]|>Map.ofList)

我理解如何将简单的高阶函数声明为类型...如果' - &gt;'从右到左阅读不止一次地用来破译它返回的东西......即一个更高阶的函数。

对于上面的一本书的例子...我明白这是在添加到地图上,我对如何破译顶线有点朦胧?并使用'fun'关键字?

1 个答案:

答案 0 :(得分:4)

因此,第一行指出safeInput是一个函数,它会Map option一个key一个value,然后返回map optionfun关键字只是创建函数的一种方式。

等效函数是

let safeInput (x:Map<'a,'b> option) (y:'a) (z:'b) :Map<'a,'b> option =
        match x with
            | Some d -> Some(d.Add(y,z))
            | None -> Some([y,z]|>Map.ofList)