2017-09-12 72 views
0

我在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 
+7

如果您知道两个可能的选项,为什么不尝试每个选项并查看哪一个可行? – Neolisk

回答

4

假设string -> Stream'astring -> string -> unit'b'T'c

现在我们已经删除了更高阶的函数,这更简单一些,问题归结为:下列类型签名有什么区别?

('a -> 'b) -> 'c 
'a -> 'b -> 'c 

第一种类型是一个函数,它从'a一个函数来'b作为其唯一参数。第二个参数是'a作为第一个参数,'b作为第二个参数。第二个是与C#类型签名Func<A, B, C>兼容。