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

| How can I implement Haskell monads in OpenAxiom (or any other Axiom
| variant including Aldor)? How does or how could the monad construction
| in Haskell fit into Axiom?

OK.  Show me your version of Haskell monad -- the reason I am asking is
that there are many things people call "monad" (including in Haskell)
and it would be not productive that I second guess what you meant.

-- Gaby

| 
| On Tue, Nov 8, 2011 at 1:45 PM, Gabriel Dos Reis <g...@cs.tamu.edu> wrote:
| > 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
| >
| > --
| > You received this message because you are subscribed to the Google Groups 
"FriCAS - computer algebra system" group.
| > To post to this group, send email to fricas-de...@googlegroups.com.
| > To unsubscribe from this group, send email to 
fricas-devel+unsubscr...@googlegroups.com.
| > For more options, visit this group at 
http://groups.google.com/group/fricas-devel?hl=en.
| >
| >

------------------------------------------------------------------------------
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