Ralf Hemmecke <r...@hemmecke.de> writes:

[...]

| In fact, shouldn't it be possible in panAxiom to have
| 
|   spnt: (DF, DF) -> %
| 
| and
| 
|   spnt: (DF, DF) -> Rep
| 
| ?

As you may know, that is already possible in all AXIOM variants.
The real question is: is it easy to use them without getting into
infinite loop?  

The answer is definitely yes in OpenAxiom.  You just have to use the
`constant definition' style (which is also used by Aldor), e.g.

      Rep == PrimitiveArray DF

instead of the old `assignment' style

      Rep := PrimitiveArray DF
 
If you use the constant definition style, the OpenAxiom compiler will
refrain from generating implicit conversions between Rep and %.
However, it will generate the morphisms

       rep: % -> Rep
       per: Rep -> %

free of charge.  They have no runtime cost.
That is the style that I use and recommend.  However, since other
AXIOM variants have not yet implemented that semantics, someone who is
writing a library for all AXIOM variants will have to go with the least
available. 

| I am very much in favour of writing the types explicitly. It's easier
| for people who check the code.

Too much redundancy can also hinder comprehension, as the real
information will be lost in the type noise.  There is a balance
to strike.  There is evidence that reasonable people differ where the
balance should be. 

-- Gaby

------------------------------------------------------------------------------
Learn how Oracle Real Application Clusters (RAC) One Node allows customers
to consolidate database storage, standardize their database environment, and, 
should the need arise, upgrade to a full multi-node Oracle RAC database 
without downtime or disruption
http://p.sf.net/sfu/oracle-sfdevnl
_______________________________________________
open-axiom-devel mailing list
open-axiom-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/open-axiom-devel

Reply via email to