Merge branch 'for-slava' of git://www.rfc1149.net/factor

db4
Slava Pestov 2008-04-04 07:09:59 -05:00
commit 26dca5d77a
3 changed files with 8 additions and 8 deletions

View File

@ -78,7 +78,7 @@ M: lazy-cons nil? ( lazy-cons -- bool )
swap [ cdr ] times car ;
: (llength) ( list acc -- n )
over nil? [ nip ] [ >r cdr r> 1+ (llength) ] if ;
over nil? [ nip ] [ [ cdr ] dip 1+ (llength) ] if ;
: llength ( list -- n )
0 (llength) ;
@ -273,7 +273,7 @@ M: lazy-from-by car ( lazy-from-by -- car )
M: lazy-from-by cdr ( lazy-from-by -- cdr )
[ lazy-from-by-n ] keep
lazy-from-by-quot dup >r call r> lfrom-by ;
lazy-from-by-quot dup slip lfrom-by ;
M: lazy-from-by nil? ( lazy-from-by -- bool )
drop f ;
@ -370,10 +370,10 @@ M: lazy-concat nil? ( lazy-concat -- bool )
] if ;
: lcomp ( list quot -- result )
>r lcartesian-product* r> lmap ;
[ lcartesian-product* ] dip lmap ;
: lcomp* ( list guards quot -- result )
>r >r lcartesian-product* r> [ lsubset ] each r> lmap ;
[ [ lcartesian-product* ] dip [ lsubset ] each ] dip lmap ;
DEFER: lmerge
@ -382,7 +382,7 @@ DEFER: lmerge
[
dup [ car ] curry -rot
[
>r cdr r> cdr lmerge
[ cdr ] bi@ lmerge
] 2curry lazy-cons
] 2curry lazy-cons ;
@ -419,7 +419,7 @@ M: lazy-io cdr ( lazy-io -- cdr )
[ lazy-io-stream ] keep
[ lazy-io-quot ] keep
car [
>r f f r> <lazy-io> [ swap set-lazy-io-cdr ] keep
[ f f ] dip <lazy-io> [ swap set-lazy-io-cdr ] keep
] [
3drop nil
] if

View File

@ -45,7 +45,7 @@ PRIVATE>
: primes-between ( low high -- seq )
primes-upto
>r 1- next-prime r>
[ 1- next-prime ] dip
[ [ <=> ] binsearch ] keep [ length ] keep <slice> ; foldable
: coprime? ( a b -- ? ) gcd nip 1 = ; foldable

View File

@ -30,7 +30,7 @@ MEMO: fn ( n -- x )
{
{ [ dup 2 < ] [ drop 1 ] }
{ [ dup odd? ] [ 2/ fn ] }
{ [ t ] [ 2/ [ fn ] keep 1- fn + ] }
{ [ t ] [ 2/ [ fn ] [ 1- fn + ] bi + ] }
} cond ;
: euler169 ( -- result )