Associative mapping protocol - Factor Documentation (original) (raw)
All associative mappings must be instances of a mixin class: assoc
assoc? ( object -- ? )
All associative mappings must implement methods on the following generic words:
at* ( key assoc -- value/f ? )
assoc-size ( assoc -- n )
>alist ( assoc -- newassoc )
Mutable assocs should implement the following additional words:
delete-at ( key assoc -- )
clear-assoc ( assoc -- )
The following three words are optional:
value-at* ( value assoc -- key/f ? )
new-assoc ( capacity exemplar -- newassoc )
assoc-like ( assoc exemplar -- newassoc )
Assocs should also implement methods on the clone, equal? and hashcode* generic words. Two utility words will help with the implementation of the last two:
assoc-hashcode ( n assoc -- code )
Finally, assoc classes should define a word for converting other types of assocs; conventionally, such words are named >class where class is the class name. Such a word can be implemented using a utility: