Move maybe-set-at to assocs
parent
ccb662c60e
commit
eda44f28a6
|
@ -278,9 +278,6 @@ ERROR: cannot-merge-poisoned states ;
|
||||||
: block-in-state ( bb -- states )
|
: block-in-state ( bb -- states )
|
||||||
dup predecessors>> state-out get '[ _ at ] map merge-states ;
|
dup predecessors>> state-out get '[ _ at ] map merge-states ;
|
||||||
|
|
||||||
: maybe-set-at ( value key assoc -- changed? )
|
|
||||||
3dup at* [ = [ 3drop f ] [ set-at t ] if ] [ 2drop set-at t ] if ;
|
|
||||||
|
|
||||||
: set-block-in-state ( state bb -- )
|
: set-block-in-state ( state bb -- )
|
||||||
[ clone ] dip state-in get set-at ;
|
[ clone ] dip state-in get set-at ;
|
||||||
|
|
||||||
|
|
|
@ -142,3 +142,7 @@ unit-test
|
||||||
|
|
||||||
[ 1 f ] [ 1 H{ } ?at ] unit-test
|
[ 1 f ] [ 1 H{ } ?at ] unit-test
|
||||||
[ 2 t ] [ 1 H{ { 1 2 } } ?at ] unit-test
|
[ 2 t ] [ 1 H{ { 1 2 } } ?at ] unit-test
|
||||||
|
|
||||||
|
[ f ] [ 1 2 H{ { 2 1 } } maybe-set-at ] unit-test
|
||||||
|
[ t ] [ 1 3 H{ { 2 1 } } clone maybe-set-at ] unit-test
|
||||||
|
[ t ] [ 3 2 H{ { 2 1 } } clone maybe-set-at ] unit-test
|
||||||
|
|
|
@ -22,6 +22,9 @@ M: assoc assoc-like drop ;
|
||||||
: ?at ( key assoc -- value/key ? )
|
: ?at ( key assoc -- value/key ? )
|
||||||
2dup at* [ 2nip t ] [ 2drop f ] if ; inline
|
2dup at* [ 2nip t ] [ 2drop f ] if ; inline
|
||||||
|
|
||||||
|
: maybe-set-at ( value key assoc -- changed? )
|
||||||
|
3dup at* [ = [ 3drop f ] [ set-at t ] if ] [ 2drop set-at t ] if ;
|
||||||
|
|
||||||
<PRIVATE
|
<PRIVATE
|
||||||
|
|
||||||
: (assoc-each) ( assoc quot -- seq quot' )
|
: (assoc-each) ( assoc quot -- seq quot' )
|
||||||
|
|
Loading…
Reference in New Issue