Hi Paul,
On Mon, May 16, 2011 at 6:49 PM, Paul Bowyer pbowyer@olynet.com wrote:
Hello:
I'm very new to lisp and decided to try ABCL to see how it works. I have some experience (not much though) with SBCL and CMUCL using Slime. I've also tried ClozureCL, but it is a little more problematic.
I built ABCL with: Netbeans-6.9 (ant-1.8.2) and with: Netbeans-7.0 (ant-1.11.1) as Java Free-Form Projects
In both cases, ABCL built without noticeable problems.
So far so good. It's expected, but good to hear people experience it that way.
I'm running PCLinuxOS, so I used the install instructions for Linux from: "http://common-lisp.net/project/armedbear/doc/abcl-install-with-java.html" by copy/paste of "test.lisp" and running : "java -jar <mypath>/abcl.jar --load test.lisp" which also went without problems.
That's very nice. I'm impressed, actually, since it has been a while since that documentation has been reviewed. Thanks for confirming!
I then created a shell script (named "abcl") in my home directory by copy/paste of your "/usr/bin/lisp" with the corrected "ABCL_JAR=" set for the location of my newly built "abcl.jar" but when I run that script from a Konsole shell, the "CL-USER(1):" prompt copies itself plus the character I typed for each character I type at the prompt. As I type, the screen fills with "CL-USER(1):" until I press the enter key and then the lisp form is evaluated and the CL-USER(2): is now at the normal expected location at the lower- left corner of the shell.
I have "rlwrap 0.30" installed for use with ABCL.
That's weird. However, I'm personally not using ABCL on Linux, most of the time; hopefully one of the other developers can chime in here. The Windows version of ABCL behaves as if it's wrapped by rlwrap (ie you can scroll through history at the REPL prompt).
Startup of ABCL:
Armed Bear Common Lisp 0.25.0 Java 1.6.0_24 Sun Microsystems Inc. Java HotSpot(TM) Client VM Low-level initialization completed in 0.746 seconds. Startup completed in 2.318 seconds. Type ":help" for a list of available commands.
This looks good.
I tried using ABCL with Slime and it starts up OK, but it would not compile and load some lisp files that work properly with SBCL and CMUCL.
Files from Slime itself? Or files of yours, like the util.lisp attached? (or both?)
From a Konsole shell using: 'java -jar "<mypath>/abcl.jar"' to run ABCL so as to avoid the prompt problem, I tried: :cload <mypath-to-files>/util.lisp and it went through the compile, but choked at loading with the following:
; Compiling <mypath-to-files>/util.lisp ... ; (IF (NOT #) ...) ; (IN-PACKAGE "UTIL") ; (DEFUN ELEMENTP ...) ; (DEFTYPE ELEMENT ...) ; (DEFUN LIST-DUP-EL-SRCH ...) ; (DEFUN BAGP ...) ; (DEFTYPE BAG ...) ; Wrote <mypath-to-files>/util.abcl (0.644 seconds) Error loading <mypath-to-files>/util.abcl at line 6 (offset 274) #<THREAD "interpreter" {993730}>: Debugger invoked on condition of type PACKAGE-ERROR The symbol COMMON-LISP-USER::ELEMENTP is not accessible in package UTIL. Restarts: 0: TOP-LEVEL Return to top level.
This was one of the files that compiles and loads without problems with SBCL or CMUCL. ClozureCL will compile and load this file from Slime if I coax it through the process, but it takes more effort than SBCL or CMUCL.
I have attached the source for this file if it is needed. It is just some code built by following (kind of) some common lisp tutorial instructions.
Well, I do understand why the error is being generated. The problem is that the symbol "ELEMENTP" which you're exporting in the EVAL-WHEN if the package already exists (which it does, because it was created in the compile phase, so LOAD running the EXPORT form) is a symbol in the package which was the current package when you called COMPILE-FILE. (common-lisp-user, which is the startup default).
Since the COMMON-LISP-USER package isn't used by the UTIL package [there's no (:use :common-lisp-user) or (use-package :common-lisp-user)] and the symbols ELEMENTP, etc are also not explicitly imported, the symbols you're passing to EXPORT are not accessible within the context of the UTIL package.
ABCL is generating this error, because you cannot EXPORT what's not there.
See http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_export... for more info on EXPORT.
How to solve this issue then? You could put the EXPORT form after the IN-PACKAGE form.
HTH,
Erik.