Bill Page <bill.p...@newsynthesis.org> writes:

|  Bill Page <bill.p...@newsynthesis.org> writes:
| > ...
| > | Second, we are trying to pass the functor M as a parameter.
| > | Specifying this is a currently very awkward in both SPAD and Aldor.
| > | What Ralph wrote involves passing a function which returns domain. In
| > | Axiom and it's derivatives this is not the same thing as a domain
| > | constructor (= functor).  This is a rather deep issue in the
| > | fundamental design of SPAD and Aldor where types are supposed to be
| > | static and I am not sure if it was ever fully resolved.  Maybe
| > | OpenAxiom has made some progress here as well?
| > |
| 
| On Tue, Nov 8, 2011 at 10:44 AM, Gabriel Dos Reis wrote:
| >
| > I think this essentially goes back to a discussion we had recently.  I
| > am not sure I succeeded in getting my points trough:-)
| >
| 
| Yes, I have been listening. I think I understand this in the context
| of the changes that you have made to OpenAxiom.

Hmm, I am not sure I understand, but let's see.

| > Yes, functors and category constructors are functions, but they are not
| > ordinary functions.  In general type constructor (in SPAD or any ML
| > descendent, which includes Haskell) and data constructors are special
| > functions.   In terms of formal semantics, they are not reducible.
| > This is a very important point.  That allows the compiler to internally
| > reason on some usage, including deciding equality when type checking an
| > expression.
| >
| 
| Do you think we should be allowed to write something like the
| following in the OpenAxiom compiler (SPAD)?
| 
|   (X:Domain):Domain+->List X
| 
| i.e. define a function that takes a domain as an argument and returns
| a domain?  Could we use such a thing in a statically typed language? I
| suppose not.

In OpenAxiom, that depends on the context of usage.

| > At the moment, all AXIOM variants do not allow you to pass a category as
| > a parameter in a domain or category definition -- well, you can in
| > OpenAxiom but the usage then is limited.  As a  consequence,
| > you can't introduce a category as a parameter and a domain parameter
| > depending on the category parameter and expect anything useful to come
| > out.  In your definition of MonadCat2, the compiler internally assumes
| > that the parameter 'C' designates a domain -- not a category as you
| > intended -- because its type is a category.  You can check that by
| > looking at the dual signature (or COSIG property of the DB) of MonadCat2.
| > So, your attempt to call it with SetCategory for C is a type violation.
| >
| 
| It is not so clear to me that Aldor intended to duplicate this part of
| the Axiom semantics.

I am not sure I understand; could you elaborate?

| > All AXIOM compilers assume that when they see a category form, the
| > head is a category constructor, not an arbritrary function (or
| > parameter) that may evaluate at runtime to a category.  This allows the
| > compiler to type check domains.  The story is almost the same for
| > domain forms in certain situations.  See the roundabout hack in
| > the implementation of Table (table.spad.pamphlet) just to conditionally
| > select the representation domain (InnerTable.)  OpenAxiom's compiler
| > tried to improve on the situation, but only marginally at the moment.
| >
| 
| Yes, that is interesting.
| 
| > But, whatever is done there is no way around the fact that a constructor
| > is not an ordinary function -- being in Haskell or in Spad.
| >
| 
| Yet in Haskell we do have functors and monads ...

Yes, but I am not seeing the implication.  Could you elaborate?

| One question being asked here is "what is required in Axiom (and/or
| its descendants) to do something equivalent?

Equivalent to what?  I'm afraid I do not understand the description of the
thing being claimed to be in Haskell -- to remove any misunderstanding I
understand Haskell, but I do not understand the *claim* being made and what
"equivalent" is being sought. 

Any clear elaboration of the original issue will help.

-- Gaby

------------------------------------------------------------------------------
RSA(R) Conference 2012
Save $700 by Nov 18
Register now
http://p.sf.net/sfu/rsa-sfdev2dev1
_______________________________________________
open-axiom-devel mailing list
open-axiom-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/open-axiom-devel

Reply via email to