[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Lexical environment of method



I am confused by your example, but if you want a lexical function
that references the instance variables of an instance, you just have
the instance create the closure:

(defflavor widget
  ((fn)
   (ivar "puzzle"))
  ())

(defmethod (setup-fn widget) ()
  (setf fn #'(lambda () ... what you want done...)))

(defmethod (use-fn widget) ()
  ... (funcall fn) ...)

If you really want top level defun-in-flavor, like:

(defun-in-flavor (fun widget) ()
  ...)

then you can try:

(defmethod (setup-fn widget) ()
  (setf fn #'(defun-in-flavor fun widget)))

(defmethod (use-fn widget) ()
  ... (funcall fn self sys:self-mapping-table) ...)

k