M: hashtable json-print ( hashtable -- ) CHAR: { write1 jsvar-encode? get [ [ [ swap jsvar-encode >json % CHAR: : , >json % ] "" make ] ] [ [ [ swap >json % CHAR: : , >json % ] "" make ] ] if { } assoc>map "," join write CHAR: } write1 ; ! Why doesn't the above work? I'd much rather be able to declare the word as per above, rather than the below: M: hashtable json-print ( hashtable -- ) CHAR: { write1 [ [ swap jsvar-encode? get [ jsvar-encode ] when >json % CHAR: : , >json % ] "" make ] { } assoc>map "," join write CHAR: } write1 ;