sequences.shifted: adding a virtual shifted sequence.
parent
06eaac026c
commit
d7d487dd82
|
@ -0,0 +1 @@
|
|||
John Benediktsson
|
|
@ -0,0 +1,10 @@
|
|||
! Copyright (C) 2013 John Benediktsson
|
||||
! See http://factorcode.org/license.txt for BSD license
|
||||
USING: arrays sequences tools.test ;
|
||||
IN: sequences.shifted
|
||||
|
||||
{ { 1 2 3 7 } } [ 4 iota -1 7 <shifted> >array ] unit-test
|
||||
{ { 7 0 1 2 } } [ 4 iota 1 7 <shifted> >array ] unit-test
|
||||
{ { 0 1 2 3 } } [ 4 iota 0 f <shifted> >array ] unit-test
|
||||
{ { f f f f } } [ 4 iota 4 f <shifted> >array ] unit-test
|
||||
{ { f f f f } } [ 4 iota -4 f <shifted> >array ] unit-test
|
|
@ -0,0 +1,27 @@
|
|||
! Copyright (C) 2013 John Benediktsson
|
||||
! See http://factorcode.org/license.txt for BSD license
|
||||
USING: accessors kernel math sequences sequences.private ;
|
||||
IN: sequences.shifted
|
||||
|
||||
TUPLE: shifted
|
||||
{ underlying read-only }
|
||||
{ n integer read-only }
|
||||
{ fill read-only } ;
|
||||
|
||||
C: <shifted> shifted
|
||||
|
||||
M: shifted length underlying>> length ;
|
||||
|
||||
M: shifted like underlying>> like ;
|
||||
|
||||
M: shifted new-sequence underlying>> new-sequence ;
|
||||
|
||||
M: shifted nth-unsafe
|
||||
[ n>> neg + ] [ underlying>> ] [ ] tri
|
||||
2over bounds-check? [ drop nth-unsafe ] [ 2nip fill>> ] if ;
|
||||
|
||||
M: shifted set-nth-unsafe
|
||||
[ n>> neg + ] [ underlying>> ] bi
|
||||
2dup bounds-check? [ set-nth-unsafe ] [ 3drop ] if ;
|
||||
|
||||
INSTANCE: shifted sequence
|
|
@ -0,0 +1 @@
|
|||
Shifted virtual sequences
|
Loading…
Reference in New Issue