VList: Difference between revisions

70 bytes removed ,  4 years ago
m
→‎{{header|Perl 6}}: insignificant shortening
(→‎{{header|Perl 6}}: rewrite method gist, forget about the warning, it did work, my bad ..)
m (→‎{{header|Perl 6}}: insignificant shortening)
Line 856:
 
method cons(vEle \a --> vList) { # method to add an element to the front
unlessif not self.base.ele.Bool { # probably faster than .elems ?
self.base.ele.push: a ;
return self;
} elsif self.offset--; == 0 {
my \l2L2offset = (self.base.ele.elems * 2) - 1 ;
my \s = vSeg.new(next => self.base, ele => flat Nil xx L2offset, a);
return vList.new( base => s, offset => l2-1L2offset )
}
if self.base.ele[--self.offset] == 0 {a;
my \l2 = self.base.ele.elems * 2 ;
my vEle @ele = Nil xx l2 ;
@ele[l2-1] = a ;
my \s = vSeg.new;
s.next = self.base;
s.ele = @ele;
return vList.new( base => s, offset => l2-1 )
}
self.offset--;
self.base.ele[self.offset] = a;
return self
}
350

edits