【发布时间】:2015-07-17 02:37:30
【问题描述】:
我正在翻译这个F# source 用于面向铁路的编程to C#。
我在翻译这个SelectMany 过载时遇到了问题:
static member inline SelectMany (this:Result<'TSuccess, 'TMessage>, func: Func<_,_>, mapper: Func<_,_,_>) =
let mapper = lift2 (fun a b -> mapper.Invoke(a,b))
let v = bind func.Invoke this
mapper this v
我已经用上面的映射了函数签名:
public static Result<TResult, TMessage> SelectMany<TSuccess, TMessage, TValue, TResult>(
this Result<TSuccess, TMessage> result,
Func<TSuccess, Result<TValue, TMessage>> func,
Func<TSuccess, TValue, TResult> mapperFunc)
F# lift2 函数(我认为我正确地 translated)接受带有签名 ('a -> 'b -> 'c) 的函数作为第一个参数,但是当绑定到 mapper 与部分应用程序绑定时,我有问题理解使用的 lambda 函数。
我通常将these helpers 用于部分应用程序,但我无法将此 F# 代码转换为 C#。
【问题讨论】:
标签: c# f# functional-programming