Fixing bug in nil?
parent
520fc019cc
commit
c901734689
|
@ -72,7 +72,7 @@ M: memoized-cons cdr ( memoized-cons -- cdr )
|
||||||
|
|
||||||
M: memoized-cons nil? ( memoized-cons -- bool )
|
M: memoized-cons nil? ( memoized-cons -- bool )
|
||||||
dup nil?>> not-memoized? [
|
dup nil?>> not-memoized? [
|
||||||
dup original>> nil? [ >>nil? drop ] keep
|
dup original>> nil? [ >>nil? drop ] keep
|
||||||
] [
|
] [
|
||||||
nil?>>
|
nil?>>
|
||||||
] if ;
|
] if ;
|
||||||
|
@ -157,22 +157,20 @@ TUPLE: lazy-filter cons quot ;
|
||||||
C: <lazy-filter> lazy-filter
|
C: <lazy-filter> lazy-filter
|
||||||
|
|
||||||
: lfilter ( list quot -- result )
|
: lfilter ( list quot -- result )
|
||||||
over nil? [ 2drop nil ] [ <lazy-filter> <memoized-cons> ] if ;
|
over nil? [ 2drop nil ] [ <lazy-filter> <memoized-cons> ] if ;
|
||||||
|
|
||||||
: car-filter? ( lazy-filter -- ? )
|
: car-filter? ( lazy-filter -- ? )
|
||||||
[ cons>> car ] keep
|
[ cons>> car ] [ quot>> ] bi call ;
|
||||||
quot>> call ;
|
|
||||||
|
|
||||||
: skip ( lazy-filter -- )
|
: skip ( lazy-filter -- )
|
||||||
dup cons>> cdr >>cons ;
|
dup cons>> cdr >>cons drop ;
|
||||||
|
|
||||||
M: lazy-filter car ( lazy-filter -- car )
|
M: lazy-filter car ( lazy-filter -- car )
|
||||||
dup car-filter? [ cons>> ] [ dup skip ] if car ;
|
dup car-filter? [ cons>> ] [ dup skip ] if car ;
|
||||||
|
|
||||||
M: lazy-filter cdr ( lazy-filter -- cdr )
|
M: lazy-filter cdr ( lazy-filter -- cdr )
|
||||||
dup car-filter? [
|
dup car-filter? [
|
||||||
[ cons>> cdr ] keep
|
[ cons>> cdr ] [ quot>> ] bi lfilter
|
||||||
quot>> lfilter
|
|
||||||
] [
|
] [
|
||||||
dup skip cdr
|
dup skip cdr
|
||||||
] if ;
|
] if ;
|
||||||
|
|
Loading…
Reference in New Issue