implemented Selectors
This commit is contained in:
parent
bc51836440
commit
a89d88d276
|
@ -111,11 +111,65 @@
|
||||||
x
|
x
|
||||||
(drop (cdr x) (- i 1))))
|
(drop (cdr x) (- i 1))))
|
||||||
|
|
||||||
|
(define (take-right flist i)
|
||||||
|
(let ((len (length flist)))
|
||||||
|
(drop flist (- len i))))
|
||||||
|
|
||||||
|
(define (drop-right flist i)
|
||||||
|
(let ((len (length flist)))
|
||||||
|
(take flist (- len i))))
|
||||||
|
|
||||||
|
(define (take! x i)
|
||||||
|
(let rec ((lis x) (n (- i 1)))
|
||||||
|
(if (zero? n)
|
||||||
|
(begin (set-cdr! lis '()) x)
|
||||||
|
(rec (cdr lis) (- n 1)))))
|
||||||
|
|
||||||
|
(define (drop-right! flist i)
|
||||||
|
(let ((lead (drop flist i)))
|
||||||
|
(if (not-pair? lead)
|
||||||
|
'()
|
||||||
|
(let rec ((lis1 flist) (lead (cdr lead)))
|
||||||
|
(if (pair? lis2)
|
||||||
|
(rec (cdr lis1) (cdr lis2))
|
||||||
|
(begin (set-cdr! lis1 '()) flist))))))
|
||||||
|
|
||||||
(define (split-at x i)
|
(define (split-at x i)
|
||||||
(values (take x i) (drop x i)))
|
(values (take x i) (drop x i)))
|
||||||
|
|
||||||
(export car cdr car+cdr
|
(define (split-at! x i)
|
||||||
take drop)
|
(values (take! x i) (drop x i)))
|
||||||
|
|
||||||
|
(define (last pair)
|
||||||
|
(car (take-right pair 1)))
|
||||||
|
|
||||||
|
(define (last-pair pair)
|
||||||
|
(take-right pair 1))
|
||||||
|
|
||||||
|
(define first car)
|
||||||
|
(define second cadr)
|
||||||
|
(define third caddr)
|
||||||
|
(define fourth cadddr)
|
||||||
|
(define (fifth pair)
|
||||||
|
(list-ref pair 5))
|
||||||
|
(define (sixth pair)
|
||||||
|
(list-ref pair 6))
|
||||||
|
(define (seventh pair)
|
||||||
|
(list-ref pair 7))
|
||||||
|
(define (eighth pair)
|
||||||
|
(list-ref pair 8))
|
||||||
|
(define (ninth pair)
|
||||||
|
(list-ref pair 9))
|
||||||
|
(define (tenth pair)
|
||||||
|
(list-ref pair 10))
|
||||||
|
|
||||||
|
(export car cdr car+cdr list-ref
|
||||||
|
caar cadr cdar cddr caaar caadr cadar caddr cdaar cdadr cddar cdddr
|
||||||
|
caaaar caaadr caadar caaddr cadaar cadadr caddar cadddr cdaaar cdaadr
|
||||||
|
cdadar cdaddr cddaar cddadr cdddar cddddr
|
||||||
|
first second third fourth fifth sixth seventh eighth ninth tenth
|
||||||
|
take drop take-right drop-right take! drop-right!
|
||||||
|
split-at split-at! last last-pair)
|
||||||
|
|
||||||
;; # Miscellaneous
|
;; # Miscellaneous
|
||||||
;; length length+
|
;; length length+
|
||||||
|
@ -133,7 +187,9 @@
|
||||||
(define (append-reverse rev-head tail)
|
(define (append-reverse rev-head tail)
|
||||||
(append (reverse rev-head) tail))
|
(append (reverse rev-head) tail))
|
||||||
|
|
||||||
(export length append concatenate reverse zip)
|
|
||||||
|
|
||||||
|
(export length append concatenate reverse zip append-reverse)
|
||||||
|
|
||||||
;; # Fold, unfold & map
|
;; # Fold, unfold & map
|
||||||
;; map for-each
|
;; map for-each
|
||||||
|
|
Loading…
Reference in New Issue