type 'a set = { insert : 'a -> 'a set; contains : 'a -> bool }
我如何能实现
val empty : 'a set
?
我试过关闭一些东西,说一个列表,但返回类型是错误的..因为它是。 (忽略这里的性能特征是可怕的事实:-))
let empty =
let rec insert_f set a =
match set with
| [] -> a :: []
| k :: rest ->
if k = a then
k :: rest
else
k :: insert_f rest a
in
let rec contains_f set a =
match set with
| [] -> false
| k :: rest ->
if k = key then
true
else contains_f rest a
in
{ insert = insert_f []; contains = contains_f []}
这很聪明,谢谢! – adelbertc