1
1
mirror of https://github.com/kanaka/mal.git synced 2024-09-20 10:07:45 +03:00

Merge pull request #153 from dubek/forth-hash-map-equality

forth: Fix hash-map equality
This commit is contained in:
Joel Martin 2016-01-26 10:42:14 -06:00
commit e995cbf161

View File

@ -484,6 +484,31 @@ MalMap
extend mal-count
MalMap/list @
MalList/count @ 2 / MalInt. ;;
extend mal= { b a -- bool }
b mal-type @ MalMap = if
a MalMap/list @ MalList/count @ { a-count }
b MalMap/list @ MalList/count @ { b-count }
a-count b-count = if
a MalMap/list @ MalList/start @ { a-start }
true ( return-val )
a-count 0 +do
a-start i cells + @ ( return-val key )
dup a MalMap/get-addr swap b MalMap/get-addr ( return-val a-val-addr b-val-addr )
dup 0= if
drop 2drop false leave
else
@ swap @ ( return-val b-val a-val )
m= if else
drop false leave
endif
endif
2 +loop
else
false
endif
else
false
endif ;;
drop
\ Examples of extending existing protocol methods to existing type