Skip to content
updatef-expanders.lisp 549 B
Newer Older
(in-package :pure)

(define-updatef-expander car (x)
  (let ((subform-temp (gensym))
        (bind-temp (gensym)))
    (values (list subform-temp)
            (list x)
            (list bind-temp)
            `(cons ,bind-temp (cdr ,subform-temp))
            `(car ,subform-temp))))

(define-updatef-expander cdr (x)
  (let ((subform-temp (gensym))
        (bind-temp (gensym)))
    (values (list subform-temp)
            (list x)
            (list bind-temp)
            `(cons (car ,subform-temp) ,bind-temp)
            `(cdr ,subform-temp))))