2017-09-12 68 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>兼容。