]> gitweb.factorcode.org Git - factor.git/commitdiff
sequences.snipped: adding snipped virtual sequences.
authorJohn Benediktsson <mrjbq7@gmail.com>
Wed, 17 Apr 2013 17:27:22 +0000 (10:27 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Wed, 17 Apr 2013 17:27:22 +0000 (10:27 -0700)
extra/sequences/snipped/authors.txt [new file with mode: 0644]
extra/sequences/snipped/snipped-tests.factor [new file with mode: 0644]
extra/sequences/snipped/snipped.factor [new file with mode: 0644]
extra/sequences/snipped/summary.txt [new file with mode: 0644]

diff --git a/extra/sequences/snipped/authors.txt b/extra/sequences/snipped/authors.txt
new file mode 100644 (file)
index 0000000..e091bb8
--- /dev/null
@@ -0,0 +1 @@
+John Benediktsson
diff --git a/extra/sequences/snipped/snipped-tests.factor b/extra/sequences/snipped/snipped-tests.factor
new file mode 100644 (file)
index 0000000..49eb46e
--- /dev/null
@@ -0,0 +1,9 @@
+! Copyright (C) 2013 John Benediktsson
+! See http://factorcode.org/license.txt for BSD license
+USING: arrays sequences tools.test ;
+IN: sequences.snipped
+
+{ { 0 1 2 5 6 } } [ 3 5 7 iota <snipped> >array ] unit-test
+{ { 0 1 2 } } [ 3 10 7 iota <snipped> >array ] unit-test
+{ { 6 } } [ -1 5 7 iota <snipped> >array ] unit-test
+{ { } } [ -1 10 7 iota <snipped> >array ] unit-test
diff --git a/extra/sequences/snipped/snipped.factor b/extra/sequences/snipped/snipped.factor
new file mode 100644 (file)
index 0000000..ff10b32
--- /dev/null
@@ -0,0 +1,25 @@
+! Copyright (C) 2013 John Benediktsson
+! See http://factorcode.org/license.txt for BSD license
+USING: accessors kernel math math.order sequences ;
+IN: sequences.snipped
+
+TUPLE: snipped
+{ seq sequence read-only }
+{ from integer read-only }
+{ length integer read-only } ;
+
+: <snipped> ( from to seq -- snipped )
+    [ length min ] keep -rot over - snipped boa ;
+
+: <removed> ( i seq -- snipped )
+    [ dup 1 + ] dip <snipped> ;
+
+M: snipped length [ seq>> length ] [ length>> ] bi [-] ;
+
+M: snipped virtual@
+    [ [ from>> dupd >= ] keep [ length>> + ] curry when ]
+    [ seq>> ] bi ;
+
+M: snipped virtual-exemplar seq>> ;
+
+INSTANCE: snipped virtual-sequence
diff --git a/extra/sequences/snipped/summary.txt b/extra/sequences/snipped/summary.txt
new file mode 100644 (file)
index 0000000..52bc155
--- /dev/null
@@ -0,0 +1 @@
+Snipped virtual sequences