axiom-developer
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Axiom-developer] Boot/SPAD package syntax


From: Gabriel Dos Reis
Subject: Re: [Axiom-developer] Boot/SPAD package syntax
Date: 05 Jun 2007 07:41:44 -0500

Stephen Wilson <address@hidden> writes:

| Gabriel Dos Reis <address@hidden> writes:
| 
| > Stephen Wilson <address@hidden> writes:
| > 
| > | Greetings,
| > | 
| > | I stumbled upon a curious facility of Boot and SPAD this evening.  I
| > | do not recall, nor can I find, a reference to this in the list
| > | archives or in any documentation.  Please correct me if I am wrong.
| > 
| > Since we have at least two versions of Boot around, you need to qualify
| > your Boot by either "old" or "new" or variations thereof.
| 
| When I say Boot, I mean the Boot which is used in Axiom. 

Why do you think I meant something else?

| In
| particular, the Boot which translates the current Boot code.  

What do you think bootsys is used for?

| Other variations are effectively mythical to me.  

I can see that.

| I guess this is what you qualify as "old"?

No.

New Boot is the one from src/boot.
Old Boot is done by depsys.

[...]

| Regardless of syntax, I am more interested in the semantics of the
| construct.

If you don't like my anseer you're out of luck.

| > New Boot (in src/boot) has gotten same syntax (::) recently (added by me).
| 
| Ok.  This is in gdr-sandbox, no?

The (::) syntax was already in Old Boot.
It was added to build-improvements.

| > | My opinion is that this is unused cruft which has no discernible
| > | application.  In fact, it theoretically results in the generation of
| > | non-portable code.  For example, several popular Lisp implementations
| > | have introduced the notion of `package locks' to prevent against
| > | unintended alteration of package symbols.  The identifier CL'FOO
| > | results in FOO being interned in the COMMON-LISP package, which would
| > | violate such a lock.  There are other examples.
| > 
| > Those are *bugs in Axiom* source code -- there are plenty of those
| > around. 
| 
| Not quite following.  There is nothing to suggest to me that SPAD as a
| language defines identifiers such as CL'FOO as being invalid in the
| same way as, say, C++ defines identifiers which start with an
| underscore to be reserved names for use by the implementation.

Axiom source code == the collection source code that makes up the
    Axiom interpreter or compiler.

| Given the lack of specification, and given the lack of use of such a
| feature, these are not bugs in Axiom by any stretch.

In this specific case, the bugs I've came across happen to be in the
manually written Lisp parts, like restart -- I believe I already
mentioned that.

[...]

| > | I am curious if anyone has noticed this facility and/or sees a potential
| > | use for it.
| > 
| > I use the syntax FOO::BAR, but not FOO'BAR, for "package-call".
| > New Boot treats FOO'BAR as a "single" identifier.
| 
| Ok, a "package-call" is a Lisp concept.  As far as I know neither Boot
| nor SPAD admit the concept of a package.

They do.

| Are there other operations in Boot which deal with packages? How can
| one define a package in Boot?

Lisp is part of New Boot through the espace (!) character.
Names in all caps are defined to correspond to their equivalent
in Lisp.  If you want to push into an existing package, you say

   )package "FOO"

-- Gaby




reply via email to

[Prev in Thread] Current Thread [Next in Thread]