]> gitweb.factorcode.org Git - factor.git/commitdiff
sequences.extras: adding flatten1.
authorJohn Benediktsson <mrjbq7@gmail.com>
Thu, 8 Nov 2012 01:02:22 +0000 (17:02 -0800)
committerJohn Benediktsson <mrjbq7@gmail.com>
Thu, 8 Nov 2012 01:02:22 +0000 (17:02 -0800)
extra/sequences/extras/extras-tests.factor
extra/sequences/extras/extras.factor

index 797a5334f4f750448a3695c745f92535381a1d2d..c68c26b812360cab0a82e46a83b6efb4011f3aca 100644 (file)
@@ -166,3 +166,6 @@ IN: sequences.extras.tests
 { { 1 0 0 1 0 0 0 1 0 0 } }
 [ 1 { 0 3 7 } 10 0 <array> [ set-nths-unsafe ] keep ] unit-test
 
+{ V{ 1 } } [ 1 flatten1 ] unit-test
+{ { 1 2 3 } } [ { 1 2 3 } flatten1 ] unit-test
+{ { 1 2 3 { { 4 } } } } [ { 1 { 2 } { 3 { { 4 } } } } flatten1 ] unit-test
index 15f7f85bd26762f6c948a646b69bba7660579f11..e98ba174751beba1e10e986b0243988f5df2bf43 100644 (file)
@@ -1,6 +1,6 @@
 USING: accessors arrays assocs fry grouping growable kernel
 locals make math math.order math.ranges sequences
-sequences.private sorting splitting ;
+sequences.deep sequences.private sorting splitting ;
 FROM: sequences => change-nth ;
 IN: sequences.extras
 
@@ -365,3 +365,12 @@ PRIVATE>
 
 : set-nths-unsafe ( value indices seq -- )
     swapd '[ [ _ ] dip _ set-nth-unsafe ] each ; inline
+
+: flatten1 ( obj -- seq )
+    [
+        [
+            dup branch? [
+                [ dup branch? [ % ] [ , ] if ] each
+            ] [ , ] if
+        ]
+    ] keep dup branch? [ drop f ] unless make ;