On Tue, Oct 06, 2020 at 05:16:20PM +0200, Ralf Hemmecke wrote:
> > Clearly, for replacing Boot code by Spad we need domains
> > which will preserve values of variables. My current
> > idea is to have list of "system" domains which do not
> > reference much outside and for which variables are
> > preserved (which is how Boot works).
>
> Well, the whole thing is only a problem for advanced users who actually
> do use )lib and )compile. I understand, that you would like system
> domains (sounds like "runtime support domains"). Such a distinction I
> can support, but otherwise I do not like much that there are two
> different kinds of domains.
It is easy to specify that system should have various "good"
features. Unfortunately, we may end up either with unimplementable
specification or with something that is extremaly hard to
implement. So we need to comprimise implementing "good"
feature that we can implement and living with things that
are hard to fix. I consider ability to do incremantal
developement as essential. Once we have this there is
problem what will happen with variables...
Well, low level domains by very nature must be different
from normal domain. When you do Spad function call
there is _runtime_ search to find corresponding routine.
Clearly seach routine will do its own functions calls.
If such calls were handled in general way we would have
infinite recursion...
I must admit that currently I plan to have parameterless
system domains. In such case search for right function
can be done at compile time. Also, for parameterless
domains variables can be stored outside domain vector,
so that the survive ')lib' without any extra effort.
> In fact, when you introduce runtime-support stuff, it would make sense
> to clean up the library by moving all $Lisp calls out and rather provide
> a domain/package "RuntimeSupport" with a clear and sufficient API so
> that nobody has to call any foo$Lisp anymore.
Yes. More precisily, some $Lisp calls call Boot code, that
should go to low level Spad domain. Remaining calls are
primitives. It make sense to create pseudo-domain say
'Builtin' and modify complier so that calls to that
domain work in expected way. OTOH open-ended interface
to other languages is useful, but I do not want to
insist that the other language is Lisp.
--
Waldek Hebisch
--
You received this message because you are subscribed to the Google Groups
"FriCAS - computer algebra system" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/fricas-devel/20201007225620.GA10057%40math.uni.wroc.pl.