USING: kernel accessors assocs multi-methods ; IN: tkv ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! GENERIC: key ( tbl key -- tbl ) GENERIC: val ( tbl val -- tbl ) ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! TUPLE: tkv tbl key val ; METHOD: key { assoc object } >r >r tkv new r> >>tbl r> >>key ; METHOD: key { tkv object } over val>> swap pick tbl>> set-at tbl>> ; METHOD: val { assoc object } >r >r tkv new r> >>tbl r> >>val ; METHOD: val { tkv object } over key>> pick tbl>> set-at tbl>> ; ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! : key-in ( key tbl -- tbl ) swap key ; : val-in ( val tbl -- tbl ) swap val ;