source: project/ode/trunk/lists.scm @ 7869

Last change on this file since 7869 was 7869, checked in by Ivan Raikov, 13 years ago

File added to the repository.

File size: 926 bytes
Line 
1
2(define first car)                      ;changed
3(define second cadr)                    ;changed
4(define third caddr)                    ;changed
5(define fourth cadddr)                  ;changed
6(define (fifth x) (car (cddddr x)))
7(define (sixth x) (cadr (cddddr x)))
8(define (seventh x) (caddr (cddddr x)))
9(define (eighth x) (cadddr (cddddr x)))
10(define (ninth x) (car (cddddr (cddddr x))))
11(define (tenth x) (cadr (cddddr (cddddr x))))
12(define (eleventh x) (caddr (cddddr (cddddr x))))
13(define (twelfth x) (cadddr (cddddr (cddddr x))))
14(define rest cdr)                       ;changed
15
16(define (last x) (if (null? (rest x)) (first x) (last (rest x))))
17
18(define (list-tabulate len proc)
19  (if (not (positive? len)) (error 'list-tabulate "len must be positive"))
20  (let loop ((i (- len 1)) (lst (list)))
21    (if (negative? i) (reverse lst)
22        (loop (- i 1) (cons (proc i) lst)))))
23
24(define (fold kons knil lis1)
25  (let lp ((lis lis1) (ans knil))                       
26    (if (null? lis) ans
27        (lp (cdr lis) (kons (car lis) ans)))))
Note: See TracBrowser for help on using the repository browser.