Subject: Re: Free vs Commercial Lisp From: Erik Naggum <erik@naggum.no> Date: 1998/12/26 Newsgroups: comp.lang.lisp Message-ID: <3123638569450316@naggum.no> * David Steuber <trashcan@david-steuber.com> | I can just go to www.franz.com and download a free for trial use version | of ACL if I remember previous postings. I think I will do that this | weekend so I have a proper basis of comparison with CMUCL. this is the right way to go. do remember to get the patches, too. let me know if you have any problems. a slight warning might be necessary: it takes time to appreciate the Allegro CL system. I thought I could upgrade from CMUCL to ACL over a weekend, but although my code "worked", it was quite obvious I was missing something very important. the Emacs interface is very good, but it takes some getting used to. I suggest spending a fair amount of time with the manuals, which only come in on-line form. print them out if you can -- I find reading manuals on the screen to be excessively exhausting. | In the open source vain, I am considering distributing my application, | if it ever leaves the vapor stage, in source only form. How can I be | sure that I don't indavertantly use a propriatary extension? I suppose | the simple answere is to compile it in both ACL and CMUCL. Are extension | packages normaly marked as such? I'm asking really stupid questions, | aren't I? no, not stupid, but basic. stupid is when you ask "advanced" questions without knowing the basics. (don't go there.) ANSI Common Lisp specifies that all symbols in the COMMON-LISP package must be the ones that the standard specifies. all your symbols must be in a separate package. if all the symbols in your code is either in your package or in the COMMON-LISP package, you don't use any extensions at the function or macro level, at least. some standard functions do take additional keyword arguments, however, and others have extensions of their own. these are few and far between, but you will find them well documented in the Allegro CL documentation. thus, if you simply read in all your source code with READ, you can check the package of every symbol. this is a fairly simple recursive function, which I leave as an exercise, but the stronger route is to remove any other packages from the package use list (obtained by PACKAGE-USE-LIST) of the package you're using, or, equivalently, specify to use only COMMON-LISP. (unuse-package "EXCL" "CL-USER") removes the default extension package from CL-USER's use list, and then you can't use any of the symbols in EXCL without a package prefix. you'll notice those when the Emacs interface inserts them in expanding your symbols. (defpackage "STEUBER" (:use "COMMON-LISP")) creates a new package that uses only the COMMON-LISP package. you would include an IN-PACKAGE form at the top of your files to use it, or use the :package command to the Allegro CL top-level. (if you create a new file, it defaults to use the CL-USER package. insert the IN-PACKAGE form and write M-x normal-mode to change that on a case by case basis, or set the Emacs variable FI:DEFAULT-PACKAGE to the name of your default package.) #:Erik -- Nie wieder KrF! Nie wieder KrF! Nie wieder KrF! Nie wieder KrF!