从C#到F#的复杂函数参数

时间:2017-09-12 14:29:43

标签: f#

我在C#中有下一个代码(方法的参数):

Func<Func<string, Stream>, Action<string, string>, T> save

但我不知道在F#中是否

save: ((string -> Stream) -> (string -> string -> unit)) -> 'T

save: (string -> Stream) -> (string -> string -> unit) -> 'T

1 个答案:

答案 0 :(得分:4)

我们假设'astring -> string -> unit'b'T'c('a -> 'b) -> 'c 'a -> 'b -> 'c

现在我们已经删除了更高阶的函数,这更容易思考,问题归结为:以下类型签名之间的区别是什么?

'a

第一种类型是一个函数,它将'b'a的函数作为唯一的参数。第二个是一个函数,它以'b作为第一个参数,Func<A, B, C>作为第二个参数。第二个与C#类型签名isConnectionError = True兼容。