math: speed up (find-integer) and (all-integers?) by removing curry.
parent
7a3a801bde
commit
ff95c17972
|
@ -144,6 +144,9 @@ GENERIC: prev-float ( m -- n )
|
||||||
#! Apply quot to i, keep i and quot, hide n.
|
#! Apply quot to i, keep i and quot, hide n.
|
||||||
[ nip call ] 3keep ; inline
|
[ nip call ] 3keep ; inline
|
||||||
|
|
||||||
|
: iterate-rot ( ? i n quot -- i n quot ? )
|
||||||
|
[ rot ] dip swap ; inline
|
||||||
|
|
||||||
: iterate-next ( i n quot -- i' n quot ) [ 1 + ] 2dip ; inline
|
: iterate-next ( i n quot -- i' n quot ) [ 1 + ] 2dip ; inline
|
||||||
|
|
||||||
PRIVATE>
|
PRIVATE>
|
||||||
|
@ -152,18 +155,16 @@ PRIVATE>
|
||||||
[ iterate-step iterate-next (each-integer) ]
|
[ iterate-step iterate-next (each-integer) ]
|
||||||
[ 3drop ] if-iterate? ; inline recursive
|
[ 3drop ] if-iterate? ; inline recursive
|
||||||
|
|
||||||
: (find-integer) ( ... i n quot: ( ... i -- ... ? ) -- ... i )
|
: (find-integer) ( ... i n quot: ( ... i -- ... ? ) -- ... i/f )
|
||||||
[
|
[
|
||||||
iterate-step
|
iterate-step iterate-rot
|
||||||
[ [ ] ] 2dip
|
[ 2drop ] [ iterate-next (find-integer) ] if
|
||||||
[ iterate-next (find-integer) ] 2curry bi-curry if
|
|
||||||
] [ 3drop f ] if-iterate? ; inline recursive
|
] [ 3drop f ] if-iterate? ; inline recursive
|
||||||
|
|
||||||
: (all-integers?) ( ... i n quot: ( ... i -- ... ? ) -- ... ? )
|
: (all-integers?) ( ... i n quot: ( ... i -- ... ? ) -- ... ? )
|
||||||
[
|
[
|
||||||
iterate-step
|
iterate-step iterate-rot
|
||||||
[ iterate-next (all-integers?) ] 3curry
|
[ iterate-next (all-integers?) ] [ 3drop f ] if
|
||||||
[ f ] if
|
|
||||||
] [ 3drop t ] if-iterate? ; inline recursive
|
] [ 3drop t ] if-iterate? ; inline recursive
|
||||||
|
|
||||||
: each-integer ( ... n quot: ( ... i -- ... ) -- ... )
|
: each-integer ( ... n quot: ( ... i -- ... ) -- ... )
|
||||||
|
|
Loading…
Reference in New Issue