RosettaCodeData/Task/Associative-array-Iteration/Phixmonti/associative-array-iteration.phixmonti
2023-07-01 13:44:08 -04:00

67 lines
1,019 B
Text

include ..\Utilitys.pmt
def getd /# dict key -- dict data #/
swap 1 get rot find nip
dup if
swap 2 get rot get nip
else
drop "Unfound"
endif
enddef
def setd /# dict ( key data ) -- dict #/
1 get var ikey
2 get var idata
drop
1 get ikey find var p drop
p if
2 get idata p set 2 set
else
2 get idata 0 put 2 set
1 get ikey 0 put 1 set
endif
enddef
def pair /# dict n -- dict ( k d ) #/
1 over 2 tolist var ikey
2 swap 2 tolist var idata
ikey sget
swap idata sget rot swap
2 tolist
enddef
def scandict /# dict n -- dict ( ) #/
var n
1 get len nip
for
pair
n if n get nip endif
print nl
endfor
enddef
def pairs /# dict -- dict ( ) #/
0 scandict
enddef
def keys
1 scandict
enddef
def values
2 scandict
enddef
/# ---------- MAIN ---------- #/
( ( ) ( ) )
( "one" 1 ) setd
( 2 "duo" ) setd
( ( 3 4 ) ( 5 "six" ) ) setd
pairs nl
keys nl
values