Why is constant qualified with package name in delivered exe?
I have two files which both have symbols and functions in the same
package. When I deliver and then execute, when a constant in one file is
accessed by a function in the other, it is qualified by the package
name. Since they are both in the same package, I don't understand why
that would be. Thanks for any help.
;;; -----------------------------------
;;; File: deliver-hello.lisp
(in-package "CL-USER")
(load-all-patches)
(compile-file "goodbye-world.lisp" :load t)
(compile-file "hello-world" :load t)
(deliver 'hello::hello-world
"d:/grouptix/hello"
0
:interface :capi)
;;; -----------------------------------
;;; File: goodbye-world.lisp
(in-package "CL-USER")
(defpackage :hello
(:use :common-lisp)
(:add-use-defaults t))
(in-package :hello)
(defconstant +goodbye-symbol+ 'goodbye)
;;; -----------------------------------
;;; File: hello-world.lisp
(in-package :hello)
(defun hello-world ()
(capi:display-message (format nil "~s" +goodbye-symbol+)))
;;; -----------------------------------
At the prompt:
> "c:\program files\lispworks\lispworks-5-1-0-x86-win32.exe" -build de
liver-hello.lisp > hello-log.txt
and when I run hello.exe, I see HELLO::GOODBYE in the CAPI message box
instead of just GOODBYE.
I thought that changing deliver-hello.lisp to something like the
following would make a difference, but it doesn't.
;;; -----------------------------------
;;; File: deliver-hello.lisp alternate version
(in-package "CL-USER")
(load-all-patches)
(compile-file "goodbye-world.lisp" :load t)
(compile-file "hello-world" :load t)
(in-package :hello)
(deliver 'hello-world
"d:/grouptix/hello"
0
:interface :capi)