--- /dev/null
+! 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
--- /dev/null
+! 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