anchor.diff:  (in-package :serapeum/internal-definitions)
   
   (defvar *subenv*)
  +
  +(defstruct-read-only (unbound
  +                      (:constructor unbound (var)))
  +  "Placeholder for an unbound variable."
  +  (var :type symbol))
   
   (defmacro without-internal-definitions (&body body)
     `(progn ,@body))
  
positive.code:                  ((type=? type '(complex single-float)) #C(0f0 0f0))
                   ((type=? type '(complex double-float)) #C(0d0 0d0))
                   ((type=? type '(complex float)) #C(0.0 0.0))
                   ;; Strings aren't immutable.
                   #+ () ((type=? type 'string) (make-string 0))
                   ((type=? type 'pathname) 'uiop:*nil-pathname*)
                   ((type=? type 'function) '#'identity)
                   ;; TODO More character types? E.g. base-char on SBCL?
  
negative.code:                                   decls
                                    (cons var binds-out))
                         (let* ((init (initialization-value var decls))
                                (bind `(,var ,init)))
                           (binds-out binds-in
                                      decls
                                      (cons bind binds-out))))))))
      ;; Shortcut: no declarations, just return the bindings.
      (binds-out binds-in decls '())))
  
  (defmacro let-initialized (bindings &body body &environment env)
    "Like LET, but if any of BINDINGS are uninitialized, try to give
  