Overview of this is that it appears to store index added as the value. You use the monad version of put to add keys, and duplicates are ignored. The items function behaves like the "just keys" version of jdict, in that in returns only keys. You can store the "symbol" elsewhere as that integer, and then retrieve <symbol string by ( { items) .
params =: 'hash' ,&< ('keytype' ; 'boxed') ,: ('valuetype' ; 'integer')
a =. params conew 'jsymbol'
put__a cut 'aa bb aa cc'
items__a ''
┌──┬──┬──┐
│aa│bb│cc│
└──┴──┴──┘
get__a items__a ''
0 1 2
put__a cut 'aa bb aa cc'
get__a items__a 'aa'
0 1 2
1 2 { items__a 'aa'
┌──┬──┐
│bb│cc│
└──┴──┘
filter allows for string keys (just char maybe?), but its buggy.
]params =: 'hash' ,&< ('keytype' ; 'literal') ,: ('valuetype' ; 'integer')
b =. params conew 'jsymbol'
put__b 'abc'
items__b ''
"junk"
get__b 'a'
0
get__b 'c'
_1
has keyshape/valueshape been fixed?