2016-02-03 54 views
1

我試圖在SMLNJ中創建一個curried函數,它將一個(string * bool)對添加到列表中。我可以這樣做:如何在curried函數中使用指定的數據類型?

fun push L a b = (a,b) :: L; 
-val push = fn : ('a * 'b) list -> 'a -> 'b -> ('a * 'b) list 

這一工程,但我想,只有接受(字符串*布爾)列表,字符串和布爾函數。我無法弄清楚如何編寫函數簽名。

回答

3

這足以添加函數定義一個明確的類型註釋:

fun push L a b = (a:string,b:bool) :: L; 

推斷類型是

val push = fn : (string * bool) list -> string -> bool -> (string * bool) list 

話雖如此 - 我不是無謂地做一個大風扇多態函數較少多態。剛性類型檢查不需要處於效用函數級別。

相關問題