Cons.st
changeset 1243 15058ebc321b
parent 1237 3814a1f983a5
child 1248 2d0493cd8d3c
equal deleted inserted replaced
1242:14de3b9cbd39 1243:15058ebc321b
   165      (Cons fromArray:#(1 2 3 4)) nth:4  
   165      (Cons fromArray:#(1 2 3 4)) nth:4  
   166      (Cons fromArray:#(1 2 3 4)) nth:5  
   166      (Cons fromArray:#(1 2 3 4)) nth:5  
   167     "
   167     "
   168 !
   168 !
   169 
   169 
       
   170 reversed
       
   171     "for lispers:
       
   172      return a new list with the cars in reverse order"
       
   173 
       
   174 "/ for now, tail recursion is not yet optimized by the st/x jitter...
       
   175 "/
       
   176 "/    |rev|
       
   177 "/
       
   178 "/    rev := [:lst :acc |
       
   179 "/                lst isNil ifTrue:[
       
   180 "/                    acc
       
   181 "/                ] ifFalse:[
       
   182 "/                    rev value:(lst tail)
       
   183 "/                        value:(Cons car:(lst head) cdr:acc)
       
   184 "/                ]
       
   185 "/           ].
       
   186 "/    ^ rev value:self value:nil
       
   187 
       
   188     | lst acc|
       
   189 
       
   190     lst := self.
       
   191     acc := nil.
       
   192 
       
   193     [
       
   194         |nLst nAcc|
       
   195 
       
   196         lst isNil ifTrue:[ ^ acc].
       
   197 
       
   198         nLst := lst tail.
       
   199         nAcc := Cons car:(lst head) cdr:acc.
       
   200         lst := nLst.
       
   201         acc := nAcc.
       
   202    ] loop
       
   203 
       
   204     "
       
   205      (Cons fromArray:#(1))       reversed     
       
   206      (Cons fromArray:#(1 2))     reversed     
       
   207      (Cons fromArray:#(1 2 3 4)) reversed    
       
   208      (Cons fromArray:(1 to:10000)) reversed    
       
   209     "
       
   210 !
       
   211 
   170 tail
   212 tail
   171     "return the tail, second or cdr - whatever you wonna call it"
   213     "return the tail, second or cdr - whatever you wonna call it"
   172 
   214 
   173     ^ self cdr
   215     ^ self cdr
   174 ! !
   216 ! !
   307 ! !
   349 ! !
   308 
   350 
   309 !Cons class methodsFor:'documentation'!
   351 !Cons class methodsFor:'documentation'!
   310 
   352 
   311 version
   353 version
   312     ^ '$Header: /cvs/stx/stx/libbasic2/Cons.st,v 1.4 2003-06-05 18:39:20 cg Exp $'
   354     ^ '$Header: /cvs/stx/stx/libbasic2/Cons.st,v 1.5 2003-06-10 13:23:44 cg Exp $'
   313 ! !
   355 ! !