Ocaml:不带参数的函数,用于返回元组列表中的泛型对

Ocaml:不带参数的函数,用于返回元组列表中的泛型对,ocaml,Ocaml,我想编写一个具有以下签名的函数,以便在关联字典中使用 empty: unit -> ('a * 'b) list 我想会是这样的 let empty () = ... 但是如何创建具有特定类型的列表呢?如果函数返回空列表,它将具有您想要的类型: # let empty () : ('a * 'b) list = [];; val empty : unit -> ('a * 'b) list = <fun> 当然,类型必须正确(必须与表达式的推断类型统

我想编写一个具有以下签名的函数,以便在关联字典中使用

    empty: unit -> ('a * 'b) list
我想会是这样的

    let empty () = ...

但是如何创建具有特定类型的列表呢?

如果函数返回空列表,它将具有您想要的类型:

# let empty () : ('a * 'b) list = [];;
val empty : unit -> ('a * 'b) list = <fun>
当然,类型必须正确(必须与表达式的推断类型统一)

更新

正如newacct指出的,您可以使用值而不是函数

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

这是定义空纯结构的常用方法(如在映射模块中)。

如果函数返回空列表,它将具有所需的类型:

# let empty () : ('a * 'b) list = [];;
val empty : unit -> ('a * 'b) list = <fun>
当然,类型必须正确(必须与表达式的推断类型统一)

更新

正如newacct指出的,您可以使用值而不是函数

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

这是定义空纯结构的常用方法(如在Map模块中)。

为什么要将其设置为函数?为什么要将其设置为函数?