diff --git a/core/effects/effects.factor b/core/effects/effects.factor index d881184508..ee929507c8 100644 --- a/core/effects/effects.factor +++ b/core/effects/effects.factor @@ -53,7 +53,7 @@ M: effect clone [ effect-in clone ] keep effect-out clone ; : split-shuffle ( stack shuffle -- stack1 stack2 ) - effect-in length swap cut* ; + effect-in length cut* ; : load-shuffle ( stack shuffle -- ) effect-in [ set ] 2each ; diff --git a/core/generator/registers/registers.factor b/core/generator/registers/registers.factor index 68e63ac605..bbde2ff6f4 100644 --- a/core/generator/registers/registers.factor +++ b/core/generator/registers/registers.factor @@ -296,7 +296,7 @@ M: phantom-retainstack finalize-height GENERIC: cut-phantom ( n phantom -- seq ) M: phantom-stack cut-phantom - [ delegate cut* swap ] keep set-delegate ; + [ delegate swap cut* swap ] keep set-delegate ; : phantom-append ( seq stack -- ) over length over adjust-phantom push-all ; diff --git a/core/prettyprint/prettyprint.factor b/core/prettyprint/prettyprint.factor index 01cff3b7b3..011a8cc851 100644 --- a/core/prettyprint/prettyprint.factor +++ b/core/prettyprint/prettyprint.factor @@ -120,7 +120,7 @@ SYMBOL: -> : remove-breakpoints ( quot pos -- quot' ) over quotation? [ - 1+ swap cut [ (remove-breakpoints) ] 2apply + 1+ cut [ (remove-breakpoints) ] 2apply [ -> ] swap 3append ] [ drop diff --git a/core/sequences/sequences-docs.factor b/core/sequences/sequences-docs.factor index c553eac0df..91253ee9e0 100644 --- a/core/sequences/sequences-docs.factor +++ b/core/sequences/sequences-docs.factor @@ -904,17 +904,17 @@ HELP: tail? { delete-nth remove delete } related-words HELP: cut-slice -{ $values { "n" "a non-negative integer" } { "seq" sequence } { "before" sequence } { "after" "a slice" } } +{ $values { "seq" sequence } { "n" "a non-negative integer" } { "before" sequence } { "after" "a slice" } } { $description "Outputs a pair of sequences, where " { $snippet "before" } " consists of the first " { $snippet "n" } " elements of " { $snippet "seq" } " and has the same type, while " { $snippet "after" } " is a slice of the remaining elements." } { $notes "Unlike " { $link cut } ", the run time of this word is proportional to the length of " { $snippet "before" } ", not " { $snippet "after" } ", so it is suitable for use in an iterative algorithm which cuts successive pieces off a sequence." } ; HELP: cut -{ $values { "n" "a non-negative integer" } { "seq" sequence } { "before" sequence } { "after" sequence } } +{ $values { "seq" sequence } { "n" "a non-negative integer" } { "before" sequence } { "after" sequence } } { $description "Outputs a pair of sequences, where " { $snippet "before" } " consists of the first " { $snippet "n" } " elements of " { $snippet "seq" } ", while " { $snippet "after" } " holds the remaining elements. Both output sequences have the same type as " { $snippet "seq" } "." } { $notes "Since this word copies the entire tail of the sequence, it should not be used in a loop. If this is important, consider using " { $link cut-slice } " instead, since it returns a slice for the tail instead of copying." } ; HELP: cut* -{ $values { "n" "a non-negative integer" } { "seq" sequence } { "before" sequence } { "after" sequence } } +{ $values { "seq" sequence } { "n" "a non-negative integer" } { "before" sequence } { "after" sequence } } { $description "Outputs a pair of sequences, where " { $snippet "after" } " consists of the last " { $snippet "n" } " elements of " { $snippet "seq" } ", while " { $snippet "before" } " holds the remaining elements. Both output sequences have the same type as " { $snippet "seq" } "." } ; HELP: start* diff --git a/core/sequences/sequences.factor b/core/sequences/sequences.factor index a31c869f24..3c63cd5cb4 100644 --- a/core/sequences/sequences.factor +++ b/core/sequences/sequences.factor @@ -604,14 +604,14 @@ M: sequence <=> tuck length tail-slice* sequence= ] if ; -: cut-slice ( n seq -- before after ) - swap [ head ] 2keep tail-slice ; +: cut-slice ( seq n -- before after ) + [ head ] 2keep tail-slice ; -: cut ( n seq -- before after ) - swap [ head ] 2keep tail ; +: cut ( seq n -- before after ) + [ head ] 2keep tail ; -: cut* ( n seq -- before after ) - swap [ head* ] 2keep tail* ; +: cut* ( seq n -- before after ) + [ head* ] 2keep tail* ; r tuple>array 2 swap cut r> + >r tuple>array 2 cut r> [ [ swap ?nth ] [ drop f ] if* ] curry* map append (>tuple) ; diff --git a/extra/base64/base64.factor b/extra/base64/base64.factor index c354de9ad1..7bbf422ea0 100644 --- a/extra/base64/base64.factor +++ b/extra/base64/base64.factor @@ -33,7 +33,7 @@ PRIVATE> : >base64 ( seq -- base64 ) #! cut string into two pieces, convert 3 bytes at a time #! pad string with = when not enough bits - [ length dup 3 mod - ] keep cut swap + dup length dup 3 mod - swap [ 3 group [ encode3 % ] each dup empty? [ drop ] [ >base64-rem % ] if diff --git a/extra/help/markup/markup.factor b/extra/help/markup/markup.factor index c2eddaf8dd..52bc75780c 100644 --- a/extra/help/markup/markup.factor +++ b/extra/help/markup/markup.factor @@ -113,7 +113,7 @@ M: f print-element drop ; "Examples" $heading print-element ; : $example ( element -- ) - 1 swap cut* swap "\n" join dup [ + 1 cut* swap "\n" join dup [ input-style get format nl print-element ] ($code) ; diff --git a/extra/io/sniffer/filter/bsd/bsd.factor b/extra/io/sniffer/filter/bsd/bsd.factor index fc34b3448b..c6882352d0 100644 --- a/extra/io/sniffer/filter/bsd/bsd.factor +++ b/extra/io/sniffer/filter/bsd/bsd.factor @@ -11,7 +11,7 @@ IN: io.sniffer.filter.bsd "long" heap-size 1- [ + ] keep bitnot bitand ; M: unix-io packet. ( string -- ) - 18 swap cut swap >byte-array bpfh. + 18 cut swap >byte-array bpfh. (packet.) ; M: unix-io sniffer-loop ( stream -- ) diff --git a/extra/irc/irc.factor b/extra/irc/irc.factor index 0f2a0fb19e..0f2f2c371a 100644 --- a/extra/irc/irc.factor +++ b/extra/irc/irc.factor @@ -77,7 +77,7 @@ SYMBOL: irc-client trim-: "!" split first ; : irc-split ( string -- seq ) 1 swap [ [ CHAR: : = ] find* ] keep - swap [ cut trim-: ] [ nip f ] if >r [ blank? ] trim trim-: + swap [ swap cut trim-: ] [ nip f ] if >r [ blank? ] trim trim-: " " split r> [ 1array append ] when* ; : me? ( name -- ? ) irc-client get irc-client-nick nick-name = ; diff --git a/extra/tar/tar.factor b/extra/tar/tar.factor index 9ee727a110..e41264680c 100644 --- a/extra/tar/tar.factor +++ b/extra/tar/tar.factor @@ -34,7 +34,7 @@ linkname magic version uname gname devmajor devminor prefix ; 155 read-c-string* over set-tar-header-prefix ; : header-checksum ( seq -- x ) - 148 swap cut-slice 8 tail-slice + 148 cut-slice 8 tail-slice [ 0 [ + ] reduce ] 2apply + 256 + ; TUPLE: checksum-error ; diff --git a/extra/tools/interpreter/interpreter.factor b/extra/tools/interpreter/interpreter.factor index f1e36032a0..a43a4b46ce 100644 --- a/extra/tools/interpreter/interpreter.factor +++ b/extra/tools/interpreter/interpreter.factor @@ -98,7 +98,7 @@ PRIVATE> 2dup nth \ break = [ nip ] [ - >r 1+ r> cut [ break ] swap 3append + swap 1+ cut [ break ] swap 3append ] if ] (step) ; @@ -107,7 +107,7 @@ PRIVATE> : step-into ( interpreter -- ) [ - cut [ + swap cut [ swap % unclip literalize , \ (step-into) , % ] [ ] make ] (step) ; diff --git a/extra/xml/xml.factor b/extra/xml/xml.factor index 0889d790b0..826b16b213 100644 --- a/extra/xml/xml.factor +++ b/extra/xml/xml.factor @@ -93,7 +93,7 @@ M: closer process : make-xml-doc ( prolog seq -- xml-doc ) dup [ tag? ] find - >r assure-tags swap cut 1 tail + >r assure-tags cut 1 tail no-pre/post no-post-tags r> swap ;