Conflicts:
extra/sequences/lib/lib-tests.factor
extra/sequences/lib/lib.factor
[ ] [ { } 0 firstn ] unit-test
[ "a" ] [ { "a" } 1 firstn ] unit-test
++<<<<<<< HEAD:extra/sequences/lib/lib-tests.factor
+[ { { 1 1 } { 1 2 } { 2 0 } } ] [ { { 2 0 } { 1 1 } { 1 2 } } dup [ first ] insertion-sort ] unit-test
++=======
+ [ "empty" ] [ { } [ "not empty" ] [ "empty" ] if-seq ] unit-test
+ [ { 1 } "not empty" ] [ { 1 } [ "not empty" ] [ "empty" ] if-seq ] unit-test
+
+ [ "empty" ] [ { } [ "empty" ] [ "not empty" ] if-empty ] unit-test
+ [ { 1 } "not empty" ] [ { 1 } [ "empty" ] [ "not empty" ] if-empty ] unit-test
++>>>>>>> 299bb1fb1692a4427f5b46f70dbbcefd6aa57163:extra/sequences/lib/lib-tests.factor
: short ( seq n -- seq n' )
over length min ; inline
+<PRIVATE
+:: insert ( seq quot n -- )
+ n zero? [
+ n n 1- [ seq nth quot call ] bi@ >= [
+ n n 1- seq exchange
+ seq quot n 1- insert
+ ] unless
+ ] unless ; inline
+PRIVATE>
+
+: insertion-sort ( seq quot -- )
+ ! quot is a transformation on elements
+ over length [ insert ] 2with each ; inline
++
+ : if-seq ( seq quot1 quot2 -- )
+ [ f like ] 2dip if* ; inline
+
+ : if-empty ( seq quot1 quot2 -- )
+ swap if-seq ; inline