panAxiom developers,

I just wanted to mention something here that I just learned about how
the Axiom interpreter handles option arguments. When discovering how
the 'draw' operations in Axiom processes optional arguments, e.g.

  draw(sin(x), x=1..10, title=="sin function")

I realized the interpreter does something rather clever but probably
quite unexpected. The problem is that (unlike Aldor) SPAD does not
provide built-in support for calling functions with optional
arguments. Instead what it does is collect all the arguments
containing == into a List *and* then it applies the name to the left
of == as a function to the value on the right. So much to my surprize:

(1) -> (x+->x)(sin==x,cos==y)

   (1)  [sin(x),cos(y)]

                                  Type: List Expression Integer

is equivalent to:

(2) -> (x+->x)([sin(x),cos(y)])

   (2)  [sin(x),cos(y)]

                                   Type: List Expression Integer

The list of optional arguments is always passed as the last argument
to the function. This is completely general so one can write for
example:

(3) -> ((x,y)+->[x,y])(sin==x,n,cos==y)

   (3)  [n,[sin(x),cos(y)]]

                                     Type: List Any

What do you think? Do you like that, or is this something that should
be implemented in a deeper way?

Regards,
Bill Page.

-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
open-axiom-devel mailing list
open-axiom-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/open-axiom-devel

Reply via email to