;;; first ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (assert-equal 'a (first '(a))) (assert-equal 'a (first '(a b))) (assert-equal 'a (first '(a b c))) (assert-equal 'a (first '(a b c d))) ;;; second ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (assert-equal 'b (second '(a b))) (assert-equal 'b (second '(a b c))) (assert-equal 'b (second '(a b c d))) ;;; third ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (assert-equal 'c (third '(a b c))) (assert-equal 'c (third '(a b c d))) ;;; last ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (assert-equal 'a (last '(a))) (assert-equal 'b (last '(a b))) (assert-equal 'c (last '(a b c))) (assert-equal 'd (last '(a b c d))) ;;; c(a|d){2}r ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (let ([lst '((a b) c d)]) (begin (assert-equal 'a (caar lst)) (assert-equal '(b) (cdar lst)) (assert-equal 'c (cadr lst)) (assert-equal '(d) (cddr lst)))) ;;; c(a|d){3}r ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (let ([lst '(((a b) c d) (e f) g h)]) (begin (assert-equal 'a (caaar lst)) (assert-equal '(b) (cdaar lst)) (assert-equal 'c (cadar lst)) (assert-equal '(d) (cddar lst)) (assert-equal 'e (caadr lst)) (assert-equal '(f) (cdadr lst)) (assert-equal 'g (caddr lst)) (assert-equal '(h) (cdddr lst)))) ;;; c(a|d){4}r ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (let ([lst '((((a b) c d) (e f) g h) ((i j) k l) (m n) o p)]) (begin (assert-equal 'a (caaaar lst)) (assert-equal '(b) (cdaaar lst)) (assert-equal 'c (cadaar lst)) (assert-equal '(d) (cddaar lst)) (assert-equal 'e (caadar lst)) (assert-equal '(f) (cdadar lst)) (assert-equal 'g (caddar lst)) (assert-equal '(h) (cdddar lst)) (assert-equal 'i (caaadr lst)) (assert-equal '(j) (cdaadr lst)) (assert-equal 'k (cadadr lst)) (assert-equal '(l) (cddadr lst)) (assert-equal 'm (caaddr lst)) (assert-equal '(n) (cdaddr lst)) (assert-equal 'o (cadddr lst)) (assert-equal '(p) (cddddr lst))))