Plaster

common-lisp
(defun change-byte (form to) "Changes :byte to the value of to" (substitute to :byte form)) (defun generate-lambda-based-on-form (form) (let ((substituted (change-byte form 'byte))) (princ substituted) (lambda (stream) (tlet ((byte integer stream));(or boolean u-byte) (timed-non-block-read-byte stream))) (print substituted) (special-if (substituted byte (signal-validation-failed-error "failed to validate form" nil nil form))))))) ;;SSS> (funcall (generate-lambda-based-on-form '(eq :byte 2)) 1) ;;(EQ BYTE 2) ;;(EQ BYTE 2) ;;(EQ BYTE 2) ;;1 (1 bit, #x1, #o1, #b1)