私はOCamlでセット(バランスの取れた探索木)の表現を実装しました。それは実際にMake
は署名の関手です
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
どこ
module type ORDERED_TYPE = sig type t val compare : t -> t -> int end
Map
ここで、標準ライブラリのような辞書を実装したいと思います。次のような署名が必要です
module Make: functor (T : ORDERED_TYPE) -> sig
type key = T.t
type +'a t
...
end
t
辞書の種類はどこですか。
バランスの取れた探索木を再び実装することはエレガントではないので、上記のファンクターとして実装されたセットの観点から辞書を定義したいと思います。それをしてもいいですか?