factor: Use new-like* everywhere.

modern-harvey3
Doug Coleman 2019-11-03 20:32:19 -06:00
parent 107f435779
commit 0ad47550e0
4 changed files with 27 additions and 30 deletions

View File

@ -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

View File

@ -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

View File

@ -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 ;

View File

@ -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