`fun` lambda 表达式有简写语法吗?

ras*_*asx 2 lambda f#

我想确保我没有错过可读但简洁的 F# 语法:我使用fun下面的语法是否过于冗长?

let toCamelCase word indexes =
    let mapping i c =
        match (indexes |> List.contains i) with
        | true                      -> Char.ToUpper(c)
        | _ when Char.IsUpper(c)    -> Char.ToLower(c)
        | _                         -> c

    word |> String.mapi mapping

[
    ("fsharP", [0; 1])
    ("nAtiveinterop", [0; 6])
    ("taskbuildereXtensions", [0; 4; 11])
    ("microsoftword", [0; 9])
]
|> List.map (fun (word, indexes) -> (word, indexes) ||> toCamelCase)
Run Code Online (Sandbox Code Playgroud)

另外,请告诉我上面代码中的其他地方是否可以改进

bri*_*rns 5

在某些函数式语言中,uncurry函数非常常见:

let uncurry f (a,b) = f a b
Run Code Online (Sandbox Code Playgroud)

然后你就可以写|> List.map (uncurry toCamelCase)了。

或者,您可以稍微简化一下您现在所拥有的内容:

|> List.map (fun pair -> pair ||> toCamelCase)
Run Code Online (Sandbox Code Playgroud)