PRIVATE>
+: recursive-hashcode ( n obj quot -- code )
+ pick 0 <= [ 3drop 0 ] [ [ 1 - ] 2dip call ] if ; inline
+
ERROR: log2-expects-positive x ;
: log2 ( x -- n )
3drop
] if ; inline recursive
+: each-integer ( ... n quot: ( ... i -- ... ) -- ... )
+ [ 0 ] 2dip each-integer-from ; inline
+
+: times ( ... n quot: ( ... -- ... ) -- ... )
+ [ drop ] prepose each-integer ; inline
+
: find-integer-from ( ... i n quot: ( ... i -- ... ? ) -- ... i/f )
2over < [
[ nip call ] 3keep roll
3drop f
] if ; inline recursive
-: find-last-integer-from ( ... n quot: ( ... i -- ... ? ) -- ... i/f )
+: find-integer ( ... n quot: ( ... i -- ... ? ) -- ... i/f )
+ [ 0 ] 2dip find-integer-from ; inline
+
+: find-last-integer ( ... n quot: ( ... i -- ... ? ) -- ... i/f )
over 0 < [
2drop f
] [
[ call ] 2keep rot [
drop
] [
- [ 1 - ] dip find-last-integer-from
+ [ 1 - ] dip find-last-integer
] if
] if ; inline recursive
3drop t
] if ; inline recursive
-: each-integer ( ... n quot: ( ... i -- ... ) -- ... )
- [ 0 ] 2dip each-integer-from ; inline
-
-: times ( ... n quot: ( ... -- ... ) -- ... )
- [ drop ] prepose each-integer ; inline
-
-: find-integer ( ... n quot: ( ... i -- ... ? ) -- ... i/f )
- [ 0 ] 2dip find-integer-from ; inline
-
: all-integers? ( ... n quot: ( ... i -- ... ? ) -- ... ? )
[ 0 ] 2dip all-integers-from? ; inline