2014-01-24 85 views

回答

4

如果你的函數返回一個空列表就會有你想要的類型:

# let empty() : ('a * 'b) list = [];; 
val empty : unit -> ('a * 'b) list = <fun> 

天然型該功能是unit -> 'a list,但OCaml中會讓你「減肥」的類型轉換爲更具體的一。

可以在形式指定任何表達一種類型的(EXPR:類型)

# let empty() = ([] : ('a * 'b) list);; 
val empty : unit -> ('a * 'b) list = <fun> 

當然,類型必須是正確的(必須與推斷出的類型的統一表達)。

更新

由於newacct指出的那樣,你可以使用一個值,而不是一個功能。

# let (empty : ('a * 'b) list) = [];; 
val empty : ('a * 'b) list = [] 

這是定義空純結構(如在地圖模塊中)的常用方法。