[Top][All Lists]

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

Re: [Axiom-developer] Boot and other Lisps

From: Gabriel Dos Reis
Subject: Re: [Axiom-developer] Boot and other Lisps
Date: 13 Mar 2007 15:22:08 -0500

Gregory Vanuxem <address@hidden> writes:

| Hello Gaby,
| Le mardi 13 mars 2007 à 02:04 -0500, Gabriel Dos Reis a écrit : 
| > Howdy!
| > 
| >   As of revision 445, bootsys from src/boot in build-improvements
| > can be built with GCL, SBCL, CLISP.  Just configure with the option
| > 
| >      --with-lisp=<your lisp command>
| > 
| > That was an opportunity to clean up src/boot/Makefile.pamphlet a bit.
| > I merged boothdr.lisp, npextras.lisp and exports.lisp in a single
| > file, initial-env.lisp, which I augmented with functions to interface
| > with the build machinery.
| I'm very happy of these modifications, this is great, thanks! 

You are welcome.

| I hope
| works in this direction will be continued. On another direction I'm also
| happy of works on the compiler and am reasonably impatient to see some
| things.

Yes, I'm trying to allocate some fixed amount of time per week to work
on Axiom, and ISO C++ stuff tends to take over :-)
I do hope to quickly get to src/interp and start improving on the Spad
compiler (which many people are waiting for).

| A part from that, apparently, you forgot to commit the file
| initial-env.lisp in the repository and I found a minor typo in btpile2
| (v\documentclass line 1).

Gah!  Just fixed.  Many thanks for testing and reporting.  That is
very much appreciated.

| You have also added documentation here and there which is a yet another
| good thing (I stop here my pseudo congratulations, this become
| insane :-). 

I should have done more of that -- but then I need to buy time :-)

| In the version of Axiom that I uploaded I added the
| Makefile.pamphlet from src/boot, which is the only documentation as far
| as I know of the boot, more precisely Shoe, language.

Yes, I intend to improve on that.  I face this dilemma: Produce an
academic style definition of Shoe, or are more to the rigid
style of the existing documentation.  I end up doing the latter. But I
believe the former is the long term solution.

I have not had (yet) the chance to look at your package -- shame on me :-(

| I have a question about an issue in this language. You have probably
| encountered a problem with the redefinition of the *package* variable,
| at least with SBCL.

Yes; that refined my understanding of Shoe :-)
And I forgot to put more documentation as planned :-(

| From what I have read you're using directly (setq
| *package* something), this prevents the addition of the *packages*
| variable to the list of locally bound variable in the 'prog'. 

Yes, that ois correct.

| My
| question is as follow, is it possible to declare a variable as special
| without adding it to this list of variables ? Such that it can be used
| normally i.e if you want to assign a new value you can use the :=
| operator and, important thing, it's not bound to nil at the beginning of
| the prog ?

Not that I'm aware of, if my understanding of Shoe is correct.  

When, I stumbled on that problem, I went back and looked at the Shoe code more
carefully.  First Shoe, translates the body of a function, by
shoCompTran1.  That function updates global states that keep track of
fluid variables (those declared with the "fluid" or "local" type),
global variables (those beginning with $), and local variables (those
that are assigned to in the body of the function).
Then Shoe considers that anything that is on the fluid variables list
or local variables list really is a local variable, therefore put it
on the PROG header.  That exhausts all the handling of variables.

My first reaction, when I ran into that problem was to extend the 
algorithm for special handling of the Lisp convention.  Then I
imagined opposition from more senior contributors and decided to go
with the solution I like the least (i.e. ugly), direct use of SETQ.

[ By the way, I would like to get rid of the PROG annotation when
  there is no variable in the list -- very common situation. ]

I see your question as suggesting that we should have the translator
honor the Lisp convention -- that would be the most logical thing to
do.  If people agree, I can add that capability to the translator --
and of course, I'll document it :-)

| If I remember correctly it's possible with variables that begin with a
| dollar sign but in the case of Lisp special variable (generally of the
| form *something*) I have not found how.

I think your observation is correct.

| During my small work on boot I
| began to modify the boot language (fluid and local variables) and
| stopped there mainly because I do not have a clear meaning of what I
| really wanted to do, what to do with these Lisp special variables (do we
| really want to manipulate these variables in boot) and, 

My vision for Boot is to have as few direct reference to Lisp as
possible, and have a defined list of reserved names with well defined

| of course,
| because you, Waldek and probably others are working in these areas and I
| do not have the necessary knowledge to work on these issues (I always
| postponed my "study" of the shoe/boot/spad compilers).
| If this is not possible actually to do what I'm asking, maybe you (or
| any others) have some thoughts about this (this is not restricted to
| bootsys, in the interpreter some special variables are used too,
| *standard-output* among others (though *standard-output* is relatively
| important since setting it to nil break the compilation process under
| SBCL).

It is definitely possible to give variables whose names are enclosed
in stars the same behaviour as those whose names starts with dollar.
We just need to make sure that we doon't conflict with some other
Boot identifiers, such as star or double-star...

-- Gaby

reply via email to

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