[erlisp-devel] undefined-symbol

Eric Lavigne lavigne.eric at gmail.com
Fri Sep 2 12:32:25 UTC 2005


I am confused by this error message.

; 
; File: /root/erlisp/erlisp-cmucl/erlisp/src/manager.lisp

; In: DEFUN SYSTEM-MANAGER-PROCESS

;   (RECEIVE-WITH-MATCHER (COND-MATCHER M) (T M))
; Error: (during macroexpansion)
; Error in KERNEL::UNDEFINED-SYMBOL-ERROR-HANDLER:  the function
LISTEN-TO-SYSTEM-MANAGER is undefined.
; 
; Error: (during macroexpansion)
; Error in KERNEL::UNDEFINED-SYMBOL-ERROR-HANDLER:  the function
LISTEN-TO-SYSTEM-MANAGER is undefined.
; 
; Converted SYSTEM-MANAGER-PROCESS.

It complains that function LISTEN-TO-SYSTEM-MANAGER is undefined, but
you can see here that this undefined function is defined immediately
before the function that complains about it being missing. It seems
like everything I've tried over the last two days lead to some sort of
missing function error, and this still doesn't make sense to me. When
I write small Lisp codes on my own, it doesn't seem to matter in which
order I define functions. As long as all the functions are defined
before I start actually running the functions, everything just works.
What is different here? Is symbol scope related to

Excerpt from manager.lisp:

(defun listen-to-system-manager ()
  (when (slot-value (current-process) 'time-to-die)
    (suicide "System manager requested termination.")))

(defun system-manager-process ()
  (do ((msg (receive-with-matcher (cond-matcher m) (t m)) 
	    (receive-with-matcher (cond-matcher m) (t m))))
      (nil)
    (cond ((eq 'link (first msg))
	   (setf (gethash (list (second msg) (third msg)) 
			  *link-table*)
		 (fourth msg)))
	  ((eq 'exit (first msg))
	   (maphash #'(lambda (k v)
			(let ((src (second msg))
			      (reason (third msg)))
			  (when (member src k)
			    (when (eq src (first k))
			      (cond ((or (eq v 'notify) (and (eq v 'default) (eq reason 'normal)))
				     (send (second k) msg))
				    (t (kill-process (second k)))))
			    (remhash k *link-table*))))
		    *link-table*)))))

For reference, I have enclosed manager.lisp (new) and process.lisp (modified).

Eric
-------------- next part --------------
A non-text attachment was scrubbed...
Name: manager.lisp
Type: application/octet-stream
Size: 1917 bytes
Desc: not available
URL: <https://mailman.common-lisp.net/pipermail/erlisp-devel/attachments/20050902/1979778e/attachment.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: process.lisp
Type: application/octet-stream
Size: 4510 bytes
Desc: not available
URL: <https://mailman.common-lisp.net/pipermail/erlisp-devel/attachments/20050902/1979778e/attachment-0001.obj>


More information about the Erlisp-devel mailing list