Étant donnécacher l'information avec OCaml enregistre
type 'a set = { insert : 'a -> 'a set; contains : 'a -> bool }
Comment puis-je mettre en œuvre
val empty : 'a set
?
J'ai essayé de fermer sur quelque chose, disons une liste, mais le type de retour est faux .. car il l'est. (Sans tenir compte du fait que les caractéristiques de performance ici sont terribles :-))
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 []}
C'est assez intelligent, merci! – adelbertc