DEFER: handle-clear-code
: lzw-process-next-code ( lzw quot: ( lzw code -- ) -- )
[ lzw-read ] dip {
- { [ 3dup drop end-of-information? ] [ 3drop ] }
- { [ 3dup drop clear-code? ] [ 2drop handle-clear-code ] }
+ { [ 2over end-of-information? ] [ 3drop ] }
+ { [ 2over clear-code? ] [ 2drop handle-clear-code ] }
[ call( lzw code -- ) ]
} cond ; inline
[ '[ _ cancel-operation ] ] dip later ;\r
\r
: with-timeout* ( obj timeout quot -- )\r
- 3dup drop queue-timeout [ nip call ] dip stop-timer ;\r
+ 2over queue-timeout [ nip call ] dip stop-timer ;\r
inline\r
\r
: with-timeout ( obj quot -- )\r
GENERIC: sift-down ( value prio left right -- heap )
: singleton-sift-down ( value prio singleton empty -- heap )
- 3dup drop prio>> <= [ <branch> ] [
+ 2over prio>> <= [ <branch> ] [
drop -rot [ [ value>> ] [ prio>> ] bi ] 2dip
<singleton-heap> <persistent-heap> <branch>
] if ;
[ tagged-epsilon? not ] filter ;
: add-todo-state ( state visited-states new-states -- )
- 3dup drop key? [ 3drop ] [
+ 2over key? [ 3drop ] [
[ conjoin ] [ push ] bi-curry* bi
] if ;
_ _
{
! old becomes new
- { [ 3dup drop eq? ] [ 2nip ] }
+ { [ 2over eq? ] [ 2nip ] }
! recurse into arrays
{ [ pick array? ] [ [ dup ] 2dip recursive-subst ] }
! otherwise do nothing
<PRIVATE
: (pruned) ( elt hash vec -- )
- 3dup drop in? [ 3drop ] [
+ 2over in? [ 3drop ] [
[ drop adjoin ] [ nip push ] 3bi
] if ; inline
: attempt ( n x y -- )
{
{ [ 3dup nip row-any? ] [ 3drop ] }
- { [ 3dup drop col-any? ] [ 3drop ] }
+ { [ 2over col-any? ] [ 3drop ] }
{ [ 3dup box-any? ] [ 3drop ] }
[ assume ]
} cond ;