Re: undefined (asdf:system-license on clisp+cywgin



On Mar 14, 4:49 pm, Duane Rettig <du...@xxxxxxxxx> wrote:
Marco Antoniotti <marc...@xxxxxxxxx> writes:
On Mar 14, 10:07 am, Mirko.Vuko...@xxxxxxxxx wrote:
Hi,

I am trying to load nlisp on my clisp+cygwin insallation, and it is
breaking on the undefined function asdf:system-license.

(It -- the nlisp package -- is loading flawlessly on linux+sbcl)

I looked in asdf.lisp, and I see that system-license is an exported
function, but I don't see it defined anywhere.  Same with a few
others, like unix-dso for example.

I am further puzzled by the hash marks in the package definition:
(defpackage #:asdf
  (:export #:defsystem #:oos #:operate #:find-system #:run-shell-
command
           #:system-definition-pathname #:find-component ; miscellaneous
           #:hyperdocumentation #:hyperdoc

I guess that I am missing something, but what?

thank you,

Mirko

They are a unaesthetic consequence of the introduction of case
sensitivity in the reader by Franz Allegro.

No, they're not.

Defpackage accepts "string designators" in various places, which
allows for strings, symbols (for their names), and even single
characters.

True, but using symbols in the current package is conflict prone and
using keyword is something I refrain from (incidentally, a *lot* of
people just use keywords when they could use a regular symbol; witness
some of the HTML libraries out there).


It is true that defpackage forms operate better in
Franz's case-sensitive lisp when the string designators are symbols,
but that is not the reason why the hash marks are there; the form
could just as easily have been:

(defpackage :asdf
  (:export :defsystem :oos :operate :find-system ...

So now let's talk about the _real_ reason why the hash marks are
there:  The hash-mark versions of the symbols are not interned, but
the ones without hash-marks are.  This means that when the compiling
lisp compiles the file and loads it as well, your lisp is left with
a whole lot of keywords interned that would not have had to be there,
like :defsystem, :oos, :operate, etc.  This is in _addition_ to the
actual symbols that were being exported: 'asdf:defsystem, 'asdf:oos,
etc.  On the other hand, the uninterned symbols are quietly gc'd away,
and your lisp environment is kept clean.

We have discussed this before. It is true that ACL and most
implementations do not have this "symbol leak" feature/bug. But,
AFAIR, it is not mandated by the standard.



Mitigating this, on the other hand, is the fact that many CL
implementations do not save the original forms in compiled code, so
the keywords are treated _as_ _if_ they had been uninterned symbols.
So if it is your habit to compile files and then load them into
various lisps (other than the compiling lisp), or in other words if
you tend to compile a system with a compiling lisp and then build it
by loading up the fasl files, your building lisp will not get
contaminated with the keywords, and you can go ahead and use the
keyword form instead.

This is all fine of course, but then again, using plain strings in
DEFPACKAGE is, IMHO, safer for ANSI coding.

Cheers
--
Marco

PS. Of course, the choice of making ANSI CL case-boggling (for lack
of a better adjective :) ) has always been one of those unexplained
mysteries of the universe. :)


.



Relevant Pages

  • Re: `Standalone Executables
    ... the details of compiling, loading, and running Lisp. ... from the shell prompt, make a directory to keep super-frob ... instructions on the webpage are literal instructions. ...
    (comp.lang.lisp)
  • Re: best environment for learning Lisp?
    ... Just type in your Lisp prompt: ... ; compiling ... have figured out how to compile, load, and run a script in SLIME. ... sort of programming too, as you have found out, but you are missing out ...
    (comp.lang.lisp)
  • Re: undefined (asdf:system-license on clisp+cywgin
    ... Sometime I shout strings and sometimes ... Franz's case-sensitive lisp when the string designators are symbols, ...  This means that when the compiling ... whatever readtable-case translation you might have in effect, ...
    (comp.lang.lisp)
  • Re: undefined (asdf:system-license on clisp+cywgin
    ... Franz's case-sensitive lisp when the string designators are symbols, ...  This means that when the compiling ... names into strings, so that even if a source file has random symbols ... whatever readtable-case translation you might have in effect, ...
    (comp.lang.lisp)
  • Re: Experience with both LispWorks and OpenMCL ObjC bindings?
    ... you could construct these strings from keywords or quoted symbols if you prefer. ... bottom line for lisp is that the lisp runtime cannot know how to deal with a particular allocation because it cannot always know who "owns" that particular object. ... Uses Lisp:keywords as standin for ObjC keywords: ... OpenMCL is, right now, a ppc-only lisp. ...
    (comp.lang.lisp)