diff --git a/core/io/files/files.factor b/core/io/files/files.factor index 7bd9599e4d..6e4648b590 100755 --- a/core/io/files/files.factor +++ b/core/io/files/files.factor @@ -35,7 +35,11 @@ M: object root-directory? ( path -- ? ) path-separator? ; : stat ( path -- directory? permissions length modified ) normalize-pathname (stat) ; -: exists? ( path -- ? ) stat >r 3drop r> >boolean ; +: file-length ( path -- n ) stat 4array third ; + +: file-modified ( path -- n ) stat >r 3drop r> ; inline + +: exists? ( path -- ? ) file-modified >boolean ; : directory? ( path -- ? ) stat 3drop ; @@ -52,10 +56,6 @@ M: object root-directory? ( path -- ? ) path-separator? ; : directory ( path -- seq ) normalize-directory dup (directory) fixup-directory ; -: file-length ( path -- n ) stat 4array third ; - -: file-modified ( path -- n ) stat >r 3drop r> ; - : last-path-separator ( path -- n ? ) [ length 2 [-] ] keep [ path-separator? ] find-last* ; diff --git a/core/math/intervals/intervals.factor b/core/math/intervals/intervals.factor index 0b4378aa8a..b7eb5be8c9 100644 --- a/core/math/intervals/intervals.factor +++ b/core/math/intervals/intervals.factor @@ -68,7 +68,7 @@ C: interval : (interval-op) ( p1 p2 quot -- p3 ) 2over >r >r >r [ first ] 2apply r> call - r> r> [ second ] 2apply and 2array ; inline + r> r> [ second ] both? 2array ; inline : interval-op ( i1 i2 quot -- i3 ) pick interval-from pick interval-from pick (interval-op) >r diff --git a/extra/combinators/cleave/cleave.factor b/extra/combinators/cleave/cleave.factor index 85381ec499..e1e3585813 100644 --- a/extra/combinators/cleave/cleave.factor +++ b/extra/combinators/cleave/cleave.factor @@ -7,7 +7,7 @@ IN: combinators.cleave ! The cleaver family ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -: bi ( obj quot quot -- val val ) >r over slip r> call ; inline +: bi ( obj quot quot -- val val ) >r keep r> call ; inline : tri ( obj quot quot quot -- val val val ) >r pick >r bi r> r> call ; inline @@ -23,7 +23,7 @@ IN: combinators.cleave ! The spread family ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -: bi* ( obj obj quot quot -- val val ) >r swap >r call r> r> call ; inline +: bi* ( obj obj quot quot -- val val ) >r swap slip r> call ; inline : tri* ( obj obj obj quot quot quot -- val val val ) >r rot >r bi* r> r> call ; inline diff --git a/extra/random/random.factor b/extra/random/random.factor index 6045da72d8..db2aacd2b0 100755 --- a/extra/random/random.factor +++ b/extra/random/random.factor @@ -36,7 +36,7 @@ SYMBOL: mt : set-mt-ith ( y i-get i-set -- ) >r mt-nth >r - [ -1 shift ] keep odd? mt-a 0 ? r> bitxor bitxor r> + [ 2/ ] keep odd? mt-a 0 ? r> bitxor bitxor r> mt-seq set-nth ; inline : mt-y ( y1 y2 -- y )