{ "" } [ { } "" reverse-as ] unit-test
{ "ABC" } [ { 67 66 65 } "" reverse-as ] unit-test
+
+{ V{ 1 } } [ 1 0 V{ } [ insert-nth! ] keep ] unit-test
+{ V{ 1 2 3 4 } } [ 2 1 V{ 1 3 4 } [ insert-nth! ] keep ] unit-test
-USING: accessors arrays assocs fry grouping kernel locals make
-math math.order math.ranges sequences sequences.private
-splitting ;
+USING: accessors arrays assocs fry grouping growable kernel
+locals make math math.order math.ranges sequences
+sequences.private splitting ;
FROM: sequences => change-nth ;
IN: sequences.extras
: map-product ( ... seq quot: ( ... elt -- ... n ) -- ... n )
[ 1 ] 2dip [ dip * ] curry [ swap ] prepose each ; inline
+
+: insert-nth! ( elt n seq -- )
+ [ length ] keep ensure swap pick (a,b]
+ over '[ [ 1 + ] keep _ move-unsafe ] each
+ set-nth-unsafe ;