{ "a" } [ { "a" } 1 firstn ] unit-test
{ [ 1 2 ] } [ 1 2 2 [ ] nsequence ] unit-test
+{ { 1 2 3 4 5 } } [ 1 2 3 4 5 { 0 0 0 0 0 } 5 (nsequence) ] unit-test
{ { 1 2 3 4 } } [ { 1 } { 2 } { 3 } { 4 } 4 nappend ] unit-test
{ V{ 1 2 3 4 } } [ { 1 } { 2 } { 3 } { 4 } 4 V{ } nappend-as ] unit-test
! Copyright (C) 2009 Joe Groff.
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel sequences sequences.private math
-combinators macros math.order math.ranges quotations fry effects
-memoize.private generalizations ;
+USING: combinators fry generalizations kernel macros math
+math.order memoize.private sequences sequences.private ;
IN: sequences.generalizations
-MACRO: nsequence ( n seq -- quot )
+MACRO: (nsequence) ( n -- quot )
+ <iota> reverse [ '[ [ _ swap set-nth-unsafe ] keep ] ] map concat ;
+
+MACRO: nsequence ( n exemplar -- quot )
[ [nsequence] ] keep '[ @ _ like ] ;
MACRO: narray ( n -- quot )