diff --git a/basis/compiler/cfg/linear-scan/live-intervals/live-intervals.factor b/basis/compiler/cfg/linear-scan/live-intervals/live-intervals.factor index 75dda9b475..00d6f73517 100644 --- a/basis/compiler/cfg/linear-scan/live-intervals/live-intervals.factor +++ b/basis/compiler/cfg/linear-scan/live-intervals/live-intervals.factor @@ -152,8 +152,8 @@ ERROR: bad-live-interval live-interval ; ! to reverse some sequences, and compute the start and end. values dup [ { - [ ranges>> reverse-here ] - [ uses>> reverse-here ] + [ ranges>> reverse! drop ] + [ uses>> reverse! drop ] [ compute-start/end ] [ check-start ] } cleave @@ -187,4 +187,4 @@ ERROR: bad-live-interval live-interval ; } cond ; : intervals-intersect? ( interval1 interval2 -- ? ) - relevant-ranges intersect-live-ranges >boolean ; inline \ No newline at end of file + relevant-ranges intersect-live-ranges >boolean ; inline diff --git a/basis/compiler/cfg/representations/representations.factor b/basis/compiler/cfg/representations/representations.factor index 42059f4152..9546721594 100644 --- a/basis/compiler/cfg/representations/representations.factor +++ b/basis/compiler/cfg/representations/representations.factor @@ -209,7 +209,7 @@ RENAMING: convert [ converted-value ] [ converted-value ] [ ] : perform-renaming ( insn -- ) needs-renaming? get [ - renaming-set get reverse-here + renaming-set get reverse! drop [ convert-insn-uses ] [ convert-insn-defs ] bi renaming-set get length 0 assert= ] [ drop ] if ; diff --git a/basis/grouping/grouping-docs.factor b/basis/grouping/grouping-docs.factor index d64745b834..e1044b0feb 100644 --- a/basis/grouping/grouping-docs.factor +++ b/basis/grouping/grouping-docs.factor @@ -52,7 +52,7 @@ HELP: { $examples { $example "USING: arrays kernel prettyprint sequences grouping ;" - "9 >array 3 dup reverse-here concat >array ." "{ 6 7 8 3 4 5 0 1 2 }" + "9 >array 3 reverse! concat >array ." "{ 6 7 8 3 4 5 0 1 2 }" } { $example "USING: kernel prettyprint sequences grouping ;" @@ -68,7 +68,7 @@ HELP: { $example "USING: arrays kernel prettyprint sequences grouping ;" "9 >array 3 " - "dup [ reverse-here ] each concat >array ." + "dup [ reverse! drop ] each concat >array ." "{ 2 1 0 5 4 3 8 7 6 }" } { $example diff --git a/basis/hints/hints.factor b/basis/hints/hints.factor index 738a960b4b..2c250aa66d 100644 --- a/basis/hints/hints.factor +++ b/basis/hints/hints.factor @@ -101,7 +101,7 @@ SYNTAX: HINTS: { { fixnum fixnum string } { fixnum fixnum array } } "specializer" set-word-prop -\ reverse-here +\ reverse! { { string } { array } } "specializer" set-word-prop diff --git a/basis/io/encodings/gb18030/gb18030.factor b/basis/io/encodings/gb18030/gb18030.factor index 2be709dbc9..2aa2c5d7a4 100644 --- a/basis/io/encodings/gb18030/gb18030.factor +++ b/basis/io/encodings/gb18030/gb18030.factor @@ -66,7 +66,7 @@ TUPLE: range ufirst ulast bfirst blast ; 126 /mod HEX: 81 + swap 10 /mod HEX: 30 + swap HEX: 81 + - 4byte-array dup reverse-here ; + 4byte-array reverse! ; : >interval-map-by ( start-quot end-quot value-quot seq -- interval-map ) '[ _ [ @ 2array ] _ tri ] { } map>assoc ; inline diff --git a/basis/io/mmap/mmap-docs.factor b/basis/io/mmap/mmap-docs.factor index 6e7662befd..33ba6850a5 100644 --- a/basis/io/mmap/mmap-docs.factor +++ b/basis/io/mmap/mmap-docs.factor @@ -81,7 +81,7 @@ ARTICLE: "io.mmap.examples" "Memory-mapped file examples" "" "\"mydata.dat\" char [" " 4 " - " [ reverse-here ] map! drop" + " [ reverse! drop ] map! drop" "] with-mapped-array" } "Normalize a file containing packed quadrupes of floats:" diff --git a/core/io/binary/binary.factor b/core/io/binary/binary.factor index f5467daea6..1275248613 100644 --- a/core/io/binary/binary.factor +++ b/core/io/binary/binary.factor @@ -11,7 +11,7 @@ IN: io.binary : nth-byte ( x n -- b ) -8 * shift mask-byte ; inline : >le ( x n -- byte-array ) iota [ nth-byte ] with B{ } map-as ; -: >be ( x n -- byte-array ) >le dup reverse-here ; +: >be ( x n -- byte-array ) >le reverse! ; : d>w/w ( d -- w1 w2 ) [ HEX: ffffffff bitand ] diff --git a/core/math/parser/parser.factor b/core/math/parser/parser.factor index 9bf1e6a896..32220c4637 100644 --- a/core/math/parser/parser.factor +++ b/core/math/parser/parser.factor @@ -138,7 +138,7 @@ PRIVATE> : positive>base ( num radix -- str ) dup 1 <= [ "Invalid radix" throw ] when [ dup 0 > ] swap [ /mod >digit ] curry "" produce-as nip - dup reverse-here ; inline + reverse! ; inline PRIVATE> diff --git a/core/sequences/sequences-docs.factor b/core/sequences/sequences-docs.factor index 43e66da2d5..99ad019063 100755 --- a/core/sequences/sequences-docs.factor +++ b/core/sequences/sequences-docs.factor @@ -605,9 +605,9 @@ HELP: exchange { $values { "m" "a non-negative integer" } { "n" "a non-negative integer" } { "seq" "a mutable sequence" } } { $description "Exchanges the " { $snippet "m" } "th and " { $snippet "n" } "th elements of " { $snippet "seq" } "." } ; -HELP: reverse-here +HELP: reverse! { $values { "seq" "a mutable sequence" } } -{ $description "Reverses a sequence in-place." } +{ $description "Reverses a sequence in-place and outputs that sequence." } { $side-effects "seq" } ; HELP: padding @@ -635,7 +635,7 @@ HELP: reverse { $values { "seq" sequence } { "newseq" "a new sequence" } } { $description "Outputs a new sequence having the same elements as " { $snippet "seq" } " but in reverse order." } ; -{ reverse reverse-here } related-words +{ reverse reverse! } related-words HELP: { $values { "seq" sequence } { "reversed" "a new sequence" } } @@ -1617,7 +1617,7 @@ ARTICLE: "sequences-destructive" "Destructive operations" } "Other destructive words:" { $subsections - reverse-here + reverse! push-all move exchange @@ -1632,7 +1632,7 @@ ARTICLE: "sequences-destructive" "Destructive operations" { { $link remove } { $link remove! } } { { $link remove-eq } { $link remove-eq! } } { { $link remove-nth } { $link remove-nth! } } - { { $link reverse } { $link reverse-here } } + { { $link reverse } { $link reverse! } } { { $link append } { $link append! } } { { $link map } { $link map! } } { { $link filter } { $link filter! } } diff --git a/core/sequences/sequences.factor b/core/sequences/sequences.factor index 6a40e2236b..ee78daed17 100755 --- a/core/sequences/sequences.factor +++ b/core/sequences/sequences.factor @@ -723,15 +723,16 @@ PRIVATE> [ exchange-unsafe ] 3tri ; -: reverse-here ( seq -- ) - [ length 2/ iota ] [ length ] [ ] tri - [ [ over - 1 - ] dip exchange-unsafe ] 2curry each ; +: reverse! ( seq -- seq ) + [ + [ length 2/ iota ] [ length ] [ ] tri + [ [ over - 1 - ] dip exchange-unsafe ] 2curry each + ] keep ; : reverse ( seq -- newseq ) [ dup [ length ] keep new-sequence - [ 0 swap copy ] keep - [ reverse-here ] keep + [ 0 swap copy ] keep reverse! ] keep like ; : sum-lengths ( seq -- n ) diff --git a/core/strings/strings-tests.factor b/core/strings/strings-tests.factor index 22bf7bb821..689d88be71 100644 --- a/core/strings/strings-tests.factor +++ b/core/strings/strings-tests.factor @@ -86,7 +86,7 @@ unit-test ] unit-test ! Make sure we clear aux vector when storing octets -[ "\u123456hi" ] [ "ih\u123456" clone dup reverse-here ] unit-test +[ "\u123456hi" ] [ "ih\u123456" clone reverse! ] unit-test ! Make sure aux vector is not shared [ "\udeadbe" ] [ diff --git a/extra/benchmark/fannkuch/fannkuch.factor b/extra/benchmark/fannkuch/fannkuch.factor index 63e635f3de..40dd54ca99 100644 --- a/extra/benchmark/fannkuch/fannkuch.factor +++ b/extra/benchmark/fannkuch/fannkuch.factor @@ -12,7 +12,7 @@ IN: benchmark.fannkuch : count-flips ( perm -- flip# ) '[ _ dup first dup 1 = - [ 2drop f ] [ head-slice reverse-here t ] if + [ 2drop f ] [ head-slice reverse! drop t ] if ] count ; inline : write-permutation ( perm -- ) diff --git a/extra/benchmark/reverse-complement/reverse-complement.factor b/extra/benchmark/reverse-complement/reverse-complement.factor index 4147ffabdf..39b7433a75 100755 --- a/extra/benchmark/reverse-complement/reverse-complement.factor +++ b/extra/benchmark/reverse-complement/reverse-complement.factor @@ -9,7 +9,7 @@ IN: benchmark.reverse-complement TR: trans-map ch>upper "ACGTUMRYKVHDB" "TGCAAKYRMBDHV" ; : translate-seq ( seq -- str ) - concat dup reverse-here dup trans-map-fast ; + concat reverse! dup trans-map-fast ; : show-seq ( seq -- ) translate-seq 60 [ print ] each ; diff --git a/misc/vim/syntax/factor.vim b/misc/vim/syntax/factor.vim index ef5046d6d6..ed8fd0d9e6 100644 --- a/misc/vim/syntax/factor.vim +++ b/misc/vim/syntax/factor.vim @@ -53,7 +53,7 @@ syn keyword factorKeyword or tuck 2bi 2tri while wrapper nip 4dip wrapper? bi* c syn keyword factorKeyword ?at assoc? assoc-clone-like assoc= delete-at* assoc-partition extract-keys new-assoc value? assoc-size map>assoc push-at assoc-like key? assoc-intersect assoc-refine update assoc-union assoc-combine at* assoc-empty? at+ set-at assoc-all? assoc-subset? assoc-hashcode change-at assoc-each assoc-diff zip values value-at rename-at inc-at enum? at cache assoc>map assoc assoc-map enum value-at* assoc-map-as >alist assoc-filter-as clear-assoc assoc-stack maybe-set-at substitute assoc-filter 2cache delete-at assoc-find keys assoc-any? unzip syn keyword factorKeyword case execute-effect no-cond no-case? 3cleave>quot 2cleave cond>quot wrong-values? no-cond? cleave>quot no-case case>quot 3cleave wrong-values to-fixed-point alist>quot case-find cond cleave call-effect 2cleave>quot recursive-hashcode linear-case-quot spread spread>quot syn keyword factorKeyword byte-array>bignum sgn >bignum next-float number= each-integer next-power-of-2 ?1+ fp-special? imaginary-part mod recip float>bits rational >float number? 2^ bignum? integer fixnum? neg fixnum sq bignum fp-snan? fp-infinity? denominator (all-integers?) times find-last-integer (each-integer) bit? * + fp-bitwise= - fp-qnan? / power-of-2? >= bitand find-integer complex < log2 > integer? real number bits>double double>bits bitor 2/ zero? rem fp-nan-payload all-integers? (find-integer) real-part prev-float align bits>float float? shift float fp-nan? abs bitxor ratio? even? <= /mod odd? >integer ratio rational? bitnot real? >fixnum complex? /i numerator /f -syn keyword factorKeyword append assert-sequence= find-last-from trim-head-slice clone-like 3sequence assert-sequence? map-as filter! last-index-from reversed index-from cut* pad-tail (indices) concat-as remove-eq but-last snip trim-tail nths nth 2pusher sequence slice? partition remove-nth tail-slice empty? tail* if-empty find-from virtual-sequence? member? set-length remove-eq! drop-prefix unclip iota unclip-last-slice bounds-error? sequence-hashcode-step map start midpoint@ rest-slice prepend fourth sift delete sigma new-sequence follow like remove-nth! first4 1sequence reverse slice unless-empty padding virtual@ repetition? set-last index 4sequence max-length set-second immutable-sequence first2 first3 replicate-as reduce-index unclip-slice supremum insert-nth trim-tail-slice tail 3append short count suffix concat flip filter sum immutable? 2sequence map-integers delete-all start* indices snip-slice check-slice sequence? head map-find reduce append-as reverse-here sequence= halves collapse-slice interleave 2map binary-reduce virtual-seq slice-error? product bounds-check? bounds-check harvest immutable find produce remove pad-head last replicate set-fourth shorten reversed? map-find-last 3map-as 2unclip-slice shorter? 3map find-last head-slice pop* 2map-as tail-slice* but-last-slice 2map-reduce iota? accumulate each pusher cut-slice new-resizable each-index head-slice* 2reverse-each sequence-hashcode memq? pop set-nth ?nth second map! join when-empty accumulator immutable-sequence? all? 3append-as virtual-sequence subseq? push-either new-like length last-index push-if 2all? lengthen assert-sequence copy map-reduce move third first 3each tail? set-first prefix bounds-error any? trim-slice exchange surround 2reduce cut change-nth min-length set-third produce-as push-all head? delete-slice rest sum-lengths 2each head* infimum glue slice-error subseq replace-slice push repetition map-index trim-head unclip-last mismatch trim +syn keyword factorKeyword append assert-sequence= find-last-from trim-head-slice clone-like 3sequence assert-sequence? map-as filter! last-index-from reversed index-from cut* pad-tail (indices) concat-as remove-eq but-last snip trim-tail nths nth 2pusher sequence slice? partition remove-nth tail-slice empty? tail* if-empty find-from virtual-sequence? member? set-length remove-eq! drop-prefix unclip iota unclip-last-slice bounds-error? sequence-hashcode-step map start midpoint@ rest-slice prepend fourth sift delete sigma new-sequence follow like remove-nth! first4 1sequence reverse slice unless-empty padding virtual@ repetition? set-last index 4sequence max-length set-second immutable-sequence first2 first3 replicate-as reduce-index unclip-slice supremum insert-nth trim-tail-slice tail 3append short count suffix concat flip filter sum immutable? 2sequence map-integers delete-all start* indices snip-slice check-slice sequence? head map-find reduce append-as reverse! sequence= halves collapse-slice interleave 2map binary-reduce virtual-seq slice-error? product bounds-check? bounds-check harvest immutable find produce remove pad-head last replicate set-fourth shorten reversed? map-find-last 3map-as 2unclip-slice shorter? 3map find-last head-slice pop* 2map-as tail-slice* but-last-slice 2map-reduce iota? accumulate each pusher cut-slice new-resizable each-index head-slice* 2reverse-each sequence-hashcode memq? pop set-nth ?nth second map! join when-empty accumulator immutable-sequence? all? 3append-as virtual-sequence subseq? push-either new-like length last-index push-if 2all? lengthen assert-sequence copy map-reduce move third first 3each tail? set-first prefix bounds-error any? trim-slice exchange surround 2reduce cut change-nth min-length set-third produce-as push-all head? delete-slice rest sum-lengths 2each head* infimum glue slice-error subseq replace-slice push repetition map-index trim-head unclip-last mismatch trim syn keyword factorKeyword global +@ change set-namestack change-global init-namespaces on off set-global namespace set with-scope bind with-variable inc dec counter initialize namestack get get-global make-assoc syn keyword factorKeyword 2array 3array pair >array 1array 4array pair? array resize-array array? syn keyword factorKeyword +character+ bad-seek-type? readln stream-seek read print with-output-stream contents write1 stream-write1 stream-copy stream-element-type with-input-stream stream-print stream-read stream-contents bl seek-output bad-seek-type nl stream-nl write flush stream-lines +byte+ stream-flush read1 seek-absolute? stream-read1 lines stream-readln stream-read-until each-line seek-end with-output-stream* seek-absolute with-streams seek-input seek-relative? input-stream stream-write read-partial seek-end? seek-relative error-stream read-until with-input-stream* with-streams* each-block output-stream stream-read-partial