axiom-developer
[Top][All Lists]
Advanced

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

Re: [Axiom-developer] Algebra bootstrap


From: Waldek Hebisch
Subject: Re: [Axiom-developer] Algebra bootstrap
Date: Wed, 7 Feb 2007 01:17:02 +0100 (CET)

> 
> I think we need to have a basic interpreter, and a basic compiler
> in the sense that they are almost like the interpreter and compiler,
> but they "know" only 
> 
>    * simple types: Boolean, Integer, Float
>    * constructed types: List(T), Vector(T)
>    * fundamental structure: Category
> 
> Form that, we must separate and rationalize the database construction.
>

Current compiler (before algebra bootstrap) does not know about Integer.
And Integer depends on large part of algebra.  So I would say that such
basic compiler while a noble goal would require substantial algebra
rewrite.  Such rewrite in turn need something like Aldor post facto
extension.

As an excercise I tried to make a minimal algebra.  I compiled
about 20 very simple domains and categories and generated corresponding
databses, but resulting interpreter was non-functional.  More effort
would probably give functional system, but ATM I am not sure if such
system is useful for bootstrap.
 
> We must also be able to process a file without first having to split
> it into several chunks.  We have been able to process SPAD files that
> way; making )abbrev a no-op.
> 

In longer run sure.  ATM I am using quite different method: I dumped
parse trees of the whole Axiom algebra into a file.  So now I can load
the whole algebra just as a single S-expression.  I am loading this
S-expression into sbcl running various analyses on it.  The idea is to
write (in Lisp) a simple compiler capable of extracting type declarations
and generating from them Axiom databases.  ATM I have a semi-reasonable
macro expander (there is one macro that the expander misess, but I
hope that it correctly expands all declarations that I need).  I have
also a simple transformer that eliminates 'where' construct.  Together
macro expander + 'where' transformer allow me to separate implementation
form interface (the assumption beeing that in databases we need only
information from interface).

Concerning abbrev declaration: I am not sure how to find out wether
something is a package or a domain without using information from
abbrevs.


-- 
                              Waldek Hebisch
address@hidden 




reply via email to

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