On 02/18/2008 07:06 PM, Gabriel Dos Reis wrote:
> Ralf --
>
> I seem to remember that you stated many times that the use of
> domain Any is a bit annoying. Do you remember why?
>
> Thanks,
>
> -- Gaby
Already the name "Any" is misleading. Can I coerce
1
"blah"
Integer
SetCategory
to Any? Yes, I can (see end of mail), but I cannot put them all together
into a list. Strange?
But assume you have an element of type Any. What can you do with it?
So what should be the exports of Any?
Look for example at
dom : % -> SExpression
++ dom(a) returns a \spadgloss{LISP} form of the type of the
++ original object that was converted to \spadtype{Any}.
obj : % -> None
++ obj(a) essentially returns the original object that was
++ converted to \spadtype{Any} except that the type is forced
++ to be \spadtype{None}.
If
a: Any
then we have
obj(a): None
Suppose that originally the object was of type Integer? How do I find
this out? I cannot do anything reasonable with an element of type
"None". All I get from the function "dom" is an SExpression. What I need
is a domain not an SExpression. But if I want a domain, that domain must
be of a certain type. A category is missing here.
If you look into the Aldor documentation, you find the domain
constructor "Object".
svn cat
https://aquarium.aldor.csd.uwo.ca/svn/aldor/trunk/aldor/aldorug/samples/objectb.as
svn cat
https://aquarium.aldor.csd.uwo.ca/svn/aldor/trunk/aldor/aldorug/samples/objectr.as
I would rather prefer something like that.
"Any" is used in a typed language (SPAD) to forget about the type so
that one can form a list of objects of different types. And then
*magically* the interpreter is able to figure out the type of the
object. I am in favour of having a typed language without compromise.
The other unnecessary and equally problematic domain is "None".
Does that help?
Ralf
(1) -> i:Integer := 1
(1) 1
Type: Integer
(2) -> a1:Any := i
(2) 1
Type: Integer
(3) -> s: String := "blah"
(3) "blah"
Type: String
(4) -> a2: Any := s
(4) "blah"
Type: String
(5) -> a3: Any := Integer
(5) Integer
Type: Domain
(6) -> a4: Any := SetCategory
(6) SetCategory
Type: SubDomain Domain
(7) -> u: List Any := [a1,a2,a3,a4]
Cannot convert an element of the construct to type Any .
(7) -> u: List Any := [a1,a2]
(7) [1,"blah"]
Type: List Any
(8) -> u: List Any := [a1,a2,a3]
Cannot convert an element of the construct to type Any .
-------------------------------------------------------------------------
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