Yaclml

TAL Template Environments 

TAL environments are simply lists of binding-sets, a binding set can be either a hash table, an object or an alist.

TAL Environment protocol

Standard Environment

(define-condition setf-tal-variable-error (error)
  ((variable-name :initarg :variable-name)
   (environment :initarg :environment))
  (:report (lambda (c s)
	     (format s "Error setting the tal variable ~S~:[.~; in the environment ~S.~]"
		       (slot-value c 'variable-name)
		       (slot-boundp c 'environment)
		       (slot-value c 'environment)))))
(define-condition unfound-tal-variable (setf-tal-variable-error)
  ()
  (:report (lambda (c s)
	     (format s "Attempting to set unknown tal variable ~S~:[.~; in the environment ~S.~]"
		       (slot-value c 'variable-name)
		       (slot-boundp c 'environment)
		       (slot-value c 'environment)))))
(define-condition unsettable-tal-variable (setf-tal-variable-error)
  ()
  (:report (lambda (c s)
	     (format s "The tal variable ~S is unsettable~:[.~; in the environment ~S.~]"
		       (slot-value c 'variable-name)
		       (slot-boundp c 'environment)
		       (slot-value c 'environment)))))

Assoc list binding set

Object binding sets

Hash table binding sets