RosettaCodeData/Task/Associative-array-Creation/Lang5/associative-array-creation....

18 lines
524 B
Plaintext

: dip swap '_ set execute _ ; : nip swap drop ;
: first 0 extract nip ; : second 1 extract nip ;
: assoc-in swap keys eq ;
: assoc-index' over keys swap eq [1] index collapse ;
: at swap assoc-index' subscript collapse second ;
: delete-at swap assoc-index' first remove ;
: keys 1 transpose first ;
: set-at
over 'dup dip assoc-in '+ reduce if 'dup dip delete-at then
"swap 2 compress 1 compress" dip swap append ;
[['foo 5]]
10 'bar rot set-at
'bar over at .
'hello 'bar rot set-at
20 'baz rot set-at .