1 (define list (lambda args args))
7 (cons (car l1) (join-lists (cdr l1) l2)))))
9 (define-macro (cadr x) (list 'car (list 'cdr x)))
11 (define-macro (define args . body)
13 (list 'define (car args) (join-lists (list 'lambda (cdr args)) body))
19 (cons (proc (car l)) (map proc (cdr l)))))
25 (define-macro (let args . body)
27 (list (join-lists (list 'lambda (map (lambda (x) (car x)) args)) body))
28 (map (lambda (x) (cadr x)) args)))
38 (if (eq? (car head) 'unquote)
39 (list 'cons (cadr head) (qqhelper tail))
40 (if (eq? (car head) 'unquote-splicing)
41 (list 'join-lists (cadr head) (qqhelper tail))
42 (list 'cons (list 'quasiquote head) (qqhelper tail))))
44 (list 'cons (list 'quote head) (qqhelper tail))
45 (list 'cons head (qqhelper tail)))))))
47 (define-macro (quasiquote arg)