anchor.diff:  ;;; Description: This class manages the mechanics of executing arbitrary Lisp
   ;;; code.
   
  -;;; $Id: funcall.lisp,v 1.2 2001/01/04 22:05:18 youngde Exp $
  +;;; $Id: funcall.lisp,v 1.3 2001/01/04 22:13:08 youngde Exp $
   
   (in-package :lisa)
   
  -(defclass funcall ()
  +(defclass function-call ()
     ((forms :initarg :forms
             :reader get-forms)
      (bindings :initarg :bindings
  
positive.code:    "This class manages the mechanics of executing arbitrary Lisp code."))
  
  (defun create-function-context (funcall token)
    (labels ((make-lexical-binding (binding token)
               (let ((fact (find-fact token (get-location binding))))
                 (cl:assert (not (null fact)) ()
                   "No fact for location ~D." (get-location binding))
                 `(,(get-name binding) ,(get-slot-value fact (get-slot-name binding)))))
             (make-context ()
             `(lambda ()
                (let (,@(mapcar #'(lambda (binding)
  
negative.code:                 ,@(get-forms funcall)))))
      (eval (make-context))))
  
  (defmethod evaluate ((self function-call) token)
    (funcall (create-function-context self token)))
  
  (defun make-function-call (forms bindings)
    (make-instance 'function-call :forms forms :bindings bindings))
  
  