SCHEME

lengthやappendは car, cdr, cons などを使って書くことができますが、car, cdr, cons はあまりにも基本なので、これを別の形で書くことはできないと思っていたのですが、以下のようにできるようです。
うーむ、脱帽。

(define (cons x y)
    (define (dispatch m)
        (cond
            *1
(define (cdr z) (z 1))

lengthはリストの長さ(java.util.List.size()と同じ)、appendはリストの結合(java.util.List.add(List)と同じ)
consは二分木のノードの生成、carは左の要素の取得、cdrは右の要素の取得。

*1:= m 0) x) ((= m 1) y) (else (error "Argument not 0 or 1 -- CONS" m)))) dispatch) (define (car z) (z 0