factor: Use new-like* everywhere.
parent
107f435779
commit
0ad47550e0
|
@ -63,7 +63,7 @@ CONSTANT: alphabet $[
|
||||||
{ 0 [ ] }
|
{ 0 [ ] }
|
||||||
{ 1 [ drop char: = ] }
|
{ 1 [ drop char: = ] }
|
||||||
{ 2 [ 2drop char: = char: = ] }
|
{ 2 [ 2drop char: = char: = ] }
|
||||||
} case data (4sequence) output stream-write-lines
|
} case data [ (4sequence) ] keep output stream-write-lines
|
||||||
] while 2drop ; inline
|
] while 2drop ; inline
|
||||||
|
|
||||||
PRIVATE>
|
PRIVATE>
|
||||||
|
@ -99,7 +99,7 @@ PRIVATE>
|
||||||
B{ char: \n char: \r } input read1-ignoring char: = or
|
B{ char: \n char: \r } input read1-ignoring char: = or
|
||||||
B{ char: \n char: \r } input read1-ignoring char: = or
|
B{ char: \n char: \r } input read1-ignoring char: = or
|
||||||
B{ char: \n char: \r } input read1-ignoring char: = or
|
B{ char: \n char: \r } input read1-ignoring char: = or
|
||||||
[ decode4 data (3sequence) ] 3keep
|
[ decode4 data [ (3sequence) ] keep ] 3keep
|
||||||
[ char: = eq? 1 0 ? ] tri@ + +
|
[ char: = eq? 1 0 ? ] tri@ + +
|
||||||
[ head-slice* ] unless-zero
|
[ head-slice* ] unless-zero
|
||||||
output stream-write
|
output stream-write
|
||||||
|
|
|
@ -65,8 +65,7 @@ M: product-sequence nth
|
||||||
sequences product-length exemplar
|
sequences product-length exemplar
|
||||||
|[ result |
|
|[ result |
|
||||||
sequences [ quot call i result set-nth-unsafe i 1 + i! ] product-each
|
sequences [ quot call i result set-nth-unsafe i 1 + i! ] product-each
|
||||||
result
|
] new-like* ; inline
|
||||||
] new-like ; inline
|
|
||||||
|
|
||||||
: product-map ( ... sequences quot: ( ... seq -- ... value ) -- ... sequence )
|
: product-map ( ... sequences quot: ( ... seq -- ... value ) -- ... sequence )
|
||||||
over product-map-as ; inline
|
over product-map-as ; inline
|
||||||
|
@ -76,5 +75,4 @@ M: product-sequence nth
|
||||||
sequences product-length { }
|
sequences product-length { }
|
||||||
|[ result |
|
|[ result |
|
||||||
sequences [ quot call 2array i result set-nth-unsafe i 1 + i! ] product-each
|
sequences [ quot call 2array i result set-nth-unsafe i 1 + i! ] product-each
|
||||||
result
|
] new-like* exemplar assoc-like ; inline
|
||||||
] new-like exemplar assoc-like ; inline
|
|
||||||
|
|
|
@ -25,7 +25,7 @@ PRIVATE>
|
||||||
(unrolled-collect) unrolled-each-integer ; inline
|
(unrolled-collect) unrolled-each-integer ; inline
|
||||||
|
|
||||||
: unrolled-map-integers ( n quot: ( n -- value ) exemplar -- newseq )
|
: unrolled-map-integers ( n quot: ( n -- value ) exemplar -- newseq )
|
||||||
overd [ [ unrolled-collect ] keep ] new-like ; inline
|
overd [ unrolled-collect ] new-like* ; inline
|
||||||
|
|
||||||
ERROR: unrolled-bounds-error
|
ERROR: unrolled-bounds-error
|
||||||
seq unroll-length ;
|
seq unroll-length ;
|
||||||
|
|
|
@ -144,31 +144,31 @@ INSTANCE: iota immutable-sequence
|
||||||
|
|
||||||
: from-end ( seq n -- seq n' ) [ dup length ] dip - ; inline
|
: from-end ( seq n -- seq n' ) [ dup length ] dip - ; inline
|
||||||
|
|
||||||
: (1sequence) ( obj seq -- seq )
|
: (1sequence) ( obj seq -- )
|
||||||
[ 0 swap set-nth-unsafe ] keep ; inline
|
0 swap set-nth-unsafe ; inline
|
||||||
|
|
||||||
: (2sequence) ( obj1 obj2 seq -- seq )
|
: (2sequence) ( obj1 obj2 seq -- )
|
||||||
[ 1 swap set-nth-unsafe ] keep (1sequence) ; inline
|
[ 1 swap set-nth-unsafe ] [ (1sequence) ] bi ; inline
|
||||||
|
|
||||||
: (3sequence) ( obj1 obj2 obj3 seq -- seq )
|
: (3sequence) ( obj1 obj2 obj3 seq -- )
|
||||||
[ 2 swap set-nth-unsafe ] keep (2sequence) ; inline
|
[ 2 swap set-nth-unsafe ] [ (2sequence) ] bi ; inline
|
||||||
|
|
||||||
: (4sequence) ( obj1 obj2 obj3 obj4 seq -- seq )
|
: (4sequence) ( obj1 obj2 obj3 obj4 seq -- )
|
||||||
[ 3 swap set-nth-unsafe ] keep (3sequence) ; inline
|
[ 3 swap set-nth-unsafe ] [ (3sequence) ] bi ; inline
|
||||||
|
|
||||||
PRIVATE>
|
PRIVATE>
|
||||||
|
|
||||||
: 1sequence ( obj exemplar -- seq )
|
: 1sequence ( obj exemplar -- seq )
|
||||||
1 swap [ (1sequence) ] new-like ; inline
|
1 swap [ (1sequence) ] new-like* ; inline
|
||||||
|
|
||||||
: 2sequence ( obj1 obj2 exemplar -- seq )
|
: 2sequence ( obj1 obj2 exemplar -- seq )
|
||||||
2 swap [ (2sequence) ] new-like ; inline
|
2 swap [ (2sequence) ] new-like* ; inline
|
||||||
|
|
||||||
: 3sequence ( obj1 obj2 obj3 exemplar -- seq )
|
: 3sequence ( obj1 obj2 obj3 exemplar -- seq )
|
||||||
3 swap [ (3sequence) ] new-like ; inline
|
3 swap [ (3sequence) ] new-like* ; inline
|
||||||
|
|
||||||
: 4sequence ( obj1 obj2 obj3 obj4 exemplar -- seq )
|
: 4sequence ( obj1 obj2 obj3 obj4 exemplar -- seq )
|
||||||
4 swap [ (4sequence) ] new-like ; inline
|
4 swap [ (4sequence) ] new-like* ; inline
|
||||||
|
|
||||||
: first2 ( seq -- first second )
|
: first2 ( seq -- first second )
|
||||||
1 swap bounds-check nip first2-unsafe ; inline
|
1 swap bounds-check nip first2-unsafe ; inline
|
||||||
|
@ -353,22 +353,21 @@ M: immutable-sequence clone-like like ; inline
|
||||||
|
|
||||||
<PRIVATE
|
<PRIVATE
|
||||||
|
|
||||||
: (append) ( seq1 seq2 accum -- accum )
|
: (append) ( seq1 seq2 accum -- )
|
||||||
[ [ over length ] dip copy-unsafe ]
|
[ [ over length ] dip copy-unsafe ]
|
||||||
[ 0 swap copy-unsafe ]
|
[ 0 swap copy-unsafe ] bi ; inline
|
||||||
[ ] tri ; inline
|
|
||||||
|
|
||||||
PRIVATE>
|
PRIVATE>
|
||||||
|
|
||||||
: append-as ( seq1 seq2 exemplar -- newseq )
|
: append-as ( seq1 seq2 exemplar -- newseq )
|
||||||
[ 2dup [ length ] bi@ + ] dip
|
[ 2dup [ length ] bi@ + ] dip
|
||||||
[ (append) ] new-like ; inline
|
[ (append) ] new-like* ; inline
|
||||||
|
|
||||||
: 3append-as ( seq1 seq2 seq3 exemplar -- newseq )
|
: 3append-as ( seq1 seq2 seq3 exemplar -- newseq )
|
||||||
[ 3dup [ length ] tri@ + + ] dip [
|
[ 3dup [ length ] tri@ + + ] dip [
|
||||||
[ [ 2over [ length ] bi@ + ] dip copy-unsafe ]
|
[ [ 2over [ length ] bi@ + ] dip copy-unsafe ]
|
||||||
[ (append) ] bi
|
[ (append) ] bi
|
||||||
] new-like ; inline
|
] new-like* ; inline
|
||||||
|
|
||||||
: append ( seq1 seq2 -- newseq ) over append-as ;
|
: append ( seq1 seq2 -- newseq ) over append-as ;
|
||||||
|
|
||||||
|
@ -473,7 +472,7 @@ PRIVATE>
|
||||||
swapd each ; inline
|
swapd each ; inline
|
||||||
|
|
||||||
: map-integers ( ... len quot: ( ... i -- ... elt ) exemplar -- ... newseq )
|
: map-integers ( ... len quot: ( ... i -- ... elt ) exemplar -- ... newseq )
|
||||||
overd [ [ collect ] keep ] new-like ; inline
|
overd [ collect ] new-like* ; inline
|
||||||
|
|
||||||
: map-as ( ... seq quot: ( ... elt -- ... newelt ) exemplar -- ... newseq )
|
: map-as ( ... seq quot: ( ... elt -- ... newelt ) exemplar -- ... newseq )
|
||||||
[ [ length ensure-integer ] keep ] 2dip
|
[ [ length ensure-integer ] keep ] 2dip
|
||||||
|
@ -768,14 +767,14 @@ PRIVATE>
|
||||||
|
|
||||||
: prefix ( seq elt -- newseq )
|
: prefix ( seq elt -- newseq )
|
||||||
over [ over length 1 + ] dip [
|
over [ over length 1 + ] dip [
|
||||||
(1sequence) [ 1 swap copy-unsafe ] keep
|
[ (1sequence) ] [ 1 swap copy-unsafe ] bi
|
||||||
] new-like ;
|
] new-like* ;
|
||||||
|
|
||||||
: suffix ( seq elt -- newseq )
|
: suffix ( seq elt -- newseq )
|
||||||
over [ over length 1 + ] dip [
|
over [ over length 1 + ] dip [
|
||||||
[ [ over length ] dip set-nth-unsafe ] keep
|
[ [ over length ] dip set-nth-unsafe ]
|
||||||
[ 0 swap copy-unsafe ] keep
|
[ 0 swap copy-unsafe ] bi
|
||||||
] new-like ;
|
] new-like* ;
|
||||||
|
|
||||||
: suffix! ( seq elt -- seq ) over push ; inline
|
: suffix! ( seq elt -- seq ) over push ; inline
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue