This fails
(1) -> (Integer,Float)
LISP output: (UNPRINTABLE UNPRINTABLE)
Tuple Type
LISP output: (UNPRINTABLE)
But this works
List Type
The following domain called Domain provides some of the
missing functionality. It is based on AldorDomain by Peter
Broadbery who writes:
[One] can still do some useful things with them by disguising the fact that they are domains, so in aldor have a type and your aldor programs can return this to axiom.
For example:
#include "axiom.as"
AldorDomain(T:Type): with { make: () -> %; coerce: (%) -> OutputForm; } == add { Rep ==> Type;
make(): % == per T;
coerce(t: %): OutputForm == { import from SExpression; devaluate(t pretend SExpression)::OutputForm };
import { BOOT_:_:devaluate: SExpression -> SExpression; } from Foreign Lisp;
local devaluate(s: SExpression): SExpression == { BOOT_:_:devaluate(s); } }
Compiling FriCAS source code from file /var/lib/zope2.10/instance/axiom-wiki/var/LatexWiki/5624154441249846913-25px004.as using Aldor compiler and options -O -Fasy -Fao -Flsp -lfricas -Mno-ALDOR_W_WillObsolete -DFriCAS -Y $FRICAS/algebra -I $FRICAS/algebra Use the system command )set compiler args to change these options. "/var/lib/zope2.10/instance/axiom-wiki/var/LatexWiki/5624154441249846913-25px004.as",line 1: #include "axiom.as" ^ [L1 C1] #1 (Error) Could not open file `axiom.as'.
The )library system command was not called after compilation.
aInteger:=make()$AldorDomain(Integer)
There are no library operations named AldorDomain Use HyperDoc Browse or issue )what op AldorDomain to learn if there is any operation containing " AldorDomain " in its name.
Cannot find a definition or applicable library operation named AldorDomain with argument type(s) Type
Perhaps you should use "@" to indicate the required return type,or "$" to specify which version of the function you need.
http://lists.nongnu.org/archive/html/axiom-developer/2005-09/msg00250.html
http://lists.nongnu.org/archive/html/axiom-developer/2005-09/msg00248.html
#include "axiom.as"
Domain: SetCategory == add {
(a: %) = (b: %): Boolean == { import from SExpression; a pretend SExpression = b pretend SExpression }
coerce(t: %): OutputForm == { import from SExpression; devaluate(t pretend SExpression)::OutputForm };
import { BOOT_:_:devaluate: SExpression -> SExpression; } from Foreign Lisp;
local devaluate(s: SExpression): SExpression == { BOOT_:_:devaluate(s); } }
Compiling FriCAS source code from file /var/lib/zope2.10/instance/axiom-wiki/var/LatexWiki/domain.as using Aldor compiler and options -O -Fasy -Fao -Flsp -lfricas -Mno-ALDOR_W_WillObsolete -DFriCAS -Y $FRICAS/algebra -I $FRICAS/algebra Use the system command )set compiler args to change these options. "/var/lib/zope2.10/instance/axiom-wiki/var/LatexWiki/domain.as",line 1: #include "axiom.as" ^ [L1 C1] #1 (Error) Could not open file `axiom.as'.
The )library system command was not called after compilation.
And it nearly solves the problem!
a:=(Integer,Float)
LISP output: (UNPRINTABLE UNPRINTABLE)
Except:
\begin{axiom}
select(a,1)
\end{axiom}
causes Axiom to abort.
Category: Aldor Library Compiler => Axiom Compiler Status: open => duplicate