[Top][All Lists]

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

Re: [Axiom-developer] RE: Types as values, and Re: Static versusDynamica

From: William Sit
Subject: Re: [Axiom-developer] RE: Types as values, and Re: Static versusDynamically typed(was:Philosophy... )
Date: Mon, 26 Sep 2005 10:54:46 -0400

Ralf Hemmecke wrote:
> [from]
> >>>>Types and functions are first class entities allowing them to be
> >>>>constructed and manipulated within Aldor programs just like any
> >>>>other value.
> Interesting. If that were so easy, it would be possible to ask a type
> for the functions it implements.

Exactly. It has been a long standing (but lost) request (I believe from me) that
Axiom constructors (that include category, domain and packages, but not the
developers :-)) allow query of their arguments. It is useful, for example, to be
able to distinguish whether a field is a quotient field of some integral domain
or just a field to make codes more efficient. The request was not acted upon
because at the time (around 1990 +/- 3 years?), effort was concentrated on
developing the Aldor (A#) compiler, which promised to solve such problems.

> Aldor allows something like
> #include "aldor"
> #include "aldorio"
> Dom: with {
>    foo: % -> Boolean;
> } == add {
>    foo(x: %): Boolean == true;
> }
> import from Dom;
> if Dom has with {foo: % -> Boolean} then {
>         stdout << "foo is there" << newline;
> } else {
>         stdout << "foo is missing" << newline;
> }
> However, I cannot, for example, write a function that returns a list of
> names of functions implemented in Dom. (That is the current knowledge I
> have.) 

In other words, if I understand the example, you can't list unless you already

Listing functions in a domain is not a simple question in Axiom. Functions can
be inherited from parent constructors or exported as new. It also depends on in
what form you want the list. Surely, by doing a ")show Dom" (this is in the
interpreter: I am not aware of any compiler equivalent) you get that list. So
are you simply asking to be able to assign the output of ")show Dom" to a string
variable? Tim may be able to provide such a general assignment construct?

> And, of course, I see no way of morphing the result of "foo" to
> "false" without writing a new function. 

That is what I was asking: code modification. Like you, I also interpret "first
class object as data" that way (but that need not be the "official"

> I am not aware of
> a language construct that invokes the compiler during the runtime of a
> program. (The compiler might not even present on the target machine.)

Thanks for this info. The interpreter of Axiom can invoke the compiler of
course. But the above meant calling the compiler from within a compiled function
at run time. Any comments from others?


reply via email to

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