USING: accessors kernel locals math sequences ; IN: lazy-seqs TUPLE: lazy-seq seq len quot ; INSTANCE: lazy-seq sequence :: lazy-seq-nth ( n lseq -- elt ) ! simply nth if length includes n lseq len>> n >= [ n lseq seq>> nth ] [ n lseq quot>> call( x -- x ) :> new-elt new-elt n lseq set-nth new-elt ] if ; M: lazy-seq length len>> ; M: lazy-seq nth lazy-seq-nth ; M: lazy-seq set-nth seq>> set-nth ; C: lazy-seq V{ } 0 [ 96 + 1 swap "@1" append ]