sig type loopable = t type 'a t val empty : 'a t val add : 'a t -> key:loopable -> data:'a -> 'a t val find : 'a t -> key:loopable -> 'a option end