On Thu, May 22, 2008 at 9:39 AM, Gabriel Dos Reis wrote:
> Bill Page writes:
> ...
> |
> | 3) Can I use Tuple in a similar manner when calling a function?
> | E.g.
> |
> | t(x:Tuple PI):INT == length(x)
> |
> | t(1,2,3)
> |
> | instead of?
> |
> | t([1,2,3])
>
> The patch is orthogonal to this case -- the patch deals specifically
> with instantiating Tuple-like constructors, not call to general functions.
>
Please consider this a feature request. :-)
> | Comments:
> |
> | 1) Besides 'Tuple', would it also be possible to treat 'Record' and
> | 'Union' this way? E.g.
> |
> | RecDom(arg:Record(sym: Symbol, str:String, int: Integer)): Public
> | == Private where
> |
> | if arg.sym=x and arg.str="x" or arg.int=0 then ...
> |
> | MyDom := RecDom(x,"x",1)
>
> In principle, treating Record this way should be possible when we
> have a type name for 'x: T'. Also, to make it fully work, one needs
> to modify the compiler too -- my patch modifies only the interpreter.
>
Yes, I think it is desirable that this also work in the compiler.
By "type name for 'x: T' " do you mean that 'x:T' would have a
different type from 'T'? I am not convinced that type is the right
abstraction for the difference between these expressions.
> | ----------
> |
> | UnionDom(arg:Union(sym: Symbol, str:String, int: Integer)):
> | Public == Private where
> |
> | if arg case sym then ...
> |
> | MyDom := UnionDom("x")
>
> The case of Union is harder. The reason is that constructors cannot
> not be overloaded. Union is overloaded.
>
I don't understand. As far as I can see in the definition
UnionDom(arg:Union(sym: Symbol, str:String, int: Integer)) ...
arg has a specific type, thus 'UnionDom' is not overloaded in the same
sense that the
UnionDom(arg:Symbol) ...
UnionDom(arg:String) ...
UnionDom(arg:Integer) ...
is an overloaded definition for 'UnionDom'.
> You did not ask for Mapping, but one should be able to have it
> for Mapping -- in fact, it was working on something related to
> Mapping (modemaps) that prompted me to add the capability.
>
Could you give an example of how this might be applied to Mapping?
Regards,
Bill Page.
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
open-axiom-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/open-axiom-devel