[Top][All Lists]
[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