; - Program 9.18, pg. 279 - (define vector-tag "vector") (define vector? (lambda (arg) (and (pair? arg) (eq? (car arg) vector-tag)))) (define vector-length (lambda (vec) (car (cdr vec)))) ; - End Program - ; - Program 9.19, pg. 280 - (define vector-ref (lambda (vec i) ((cddr vec) i))) (define vector-generator (lambda (gen-proc) (lambda (size) (cons vector-tag (cons size gen-proc))))) ; - End Program - ; - Program 9.2, pg. 270 - (define make-vector (lambda args (let ((fill-value (if (singleton-list? args) '() (cadr args)))) ((vector-generator (lambda (i) fill-value)) (car args))))) ; - End Program - ; - Program 2.1, pg. 44 - (define singleton-list? (lambda (ls) (and (pair? ls) (null? (cdr ls))))) ; - End Program - ; - Program 9.2, pg. 270 - (define make-vector (lambda args (let ((fill-value (if (singleton-list? args) '() (cadr args)))) ((vector-generator (lambda (i) fill-value)) (car args))))) ; - End Program - ; - Program 2.1, pg. 44 - (define singleton-list? (lambda (ls) (and (pair? ls) (null? (cdr ls))))) ; - End Program -