anchor.diff:           ;; :FIXME: dirty hack
            :for ,sym
            :in ,seq
  -         :do ,(emit-code backend body)))))
  +         :do ,(emit-code backend body :output-p output-p)))))
  +
  +(defgeneric emit-lambda (backend att)
  +  (:method (backend att)
  +   (let* ((code (emit-code backend att))
  +          (syms (symbols backend)))
  +     (eval
  +      `(lambda ,(if syms `(&key ,@syms) ())
  +         ,code
  +         t)))))
  
positive.code:     (loop :for scope :in (scopes backend)
            :thereis (member sym scope))))
  
  (defgeneric emit-code (backend obj)
    (:method (backend obj)
        (error "The backend ~A of ~A is not implemented" backend obj)))
  
  ;;; You are to implement the backend specific `emit-code' for `att-output'
  ;; (defmethod emit-code (backend (obj att-output)))
  
  (defmethod emit-code (backend (obj att-string))
    (declare (ignore backend))
    (value obj))
  
  (defmethod emit-code (backend (obj att-variable))
    (let ((sym (varsym obj)))
      (unless (find-from-scope sym backend)
        (push sym (symbols backend)))
      sym))
  
  (defmethod emit-code (backend (obj att-constant))
    (declare (ignore backend))
    `',(value obj))
  
  (defmethod emit-code (backend (obj att-eval))
    (declare (ignore backend))
    (sexp obj))
  
  (defmethod emit-code (backend (obj att-nil))
    (declare (ignore backend obj))
    nil)
  
  (defmethod emit-code (backend (obj att-progn))
    (cons 'progn (mapcar (lambda (node)
                              (emit-code backend node))
                         (nodes obj))))
  
  (defmethod emit-code (backend (obj att-if))
    (with-slots (cond-clause then-clause else-clause) obj
      (list 'if
            (emit-code backend cond-clause)
            (emit-code backend then-clause)
            (emit-code backend else-clause))))
  
  (defmethod emit-code (backend (obj att-loop))
    (with-slots (loop-seq body loop-var) obj
      (let* ((seq (emit-code backend loop-seq))
             (sym (varsym loop-var)))
  
negative.code: (in-package :cl-user)
  (defpackage clta.backend
    (:use :cl :clta.util :clta.att)
    (:import-from :html-encode
                  :encode-for-tt)
    (:export :backend
             :make-backend
             :emit-code
             :emit-lambda
             :symbols))
  
  (in-package :clta.backend)
  