Ho implementato una rappresentazione di set (alberi di ricerca bilanciati) in OCaml. In realtà è un funtore Make
della firmaIn OCaml, è possibile definire la mappa in termini di Set?
module Make :
functor (T : ORDERED_TYPE) ->
sig
type elt = T.t
type t
val empty : t
val cons : elt -> t -> t
val delete : elt -> t -> t
val mem : elt -> t -> bool
val cardinal : t -> int
end
dove
module type ORDERED_TYPE = sig type t val compare : t -> t -> int end
Ora mi piacerebbe realizzare un dizionario come Map
nella libreria standard. Deve avere una firma come
module Make: functor (T : ORDERED_TYPE) -> sig
type key = T.t
type +'a t
...
end
dove t
è il tipo di dizionari.
L'implementazione di alberi di ricerca bilanciati di nuovo non è elegante, quindi voglio definire dizionari in termini di insiemi implementati come un functor sopra. Posso farlo?
Il problema è che l'affermazione dei compiti sembra richiedere la definizione di Mappa in termini di Set in parole molto vaghe. A proposito, se provo a passare una struttura su Set, devo definire il tipo t, ma come posso farlo? Voglio che sia di tipo polimorfico. – Pteromys