Re: [Axiom-mail] Spad and inductive types

2007-05-09 Thread Bill Page
Quoting Ralf Hemmecke [EMAIL PROTECTED]: All the exports that appear are basically the exports of the Union (OK, Union still has a few more.) ---BEGIN aaa.as #include aldor #include aldorio define ET: Category == with; -- ExpressionType Expr: ET with { MkInt: Integer - %; It

Re: [Axiom-mail] Spad and inductive types

2007-05-09 Thread Gabriel Dos Reis
Bill Page [EMAIL PROTECTED] writes: | Quoting Ralf Hemmecke [EMAIL PROTECTED]: | | | All the exports that appear are basically the | exports of the Union (OK, Union still has a few more.) | | ---BEGIN aaa.as | #include aldor | #include aldorio | | define ET: Category == with; --

Re: [Axiom-mail] Spad and inductive types

2007-05-09 Thread Gabriel Dos Reis
Bill Page [EMAIL PROTECTED] writes: [...] | in Haskell, by a kind of convenient abuse of notation | (or polymorphism if you wish) 'MkInt' also denotes a | function | |MkInt: Int - MkInt Int Bill -- you're highly confused.

Re: [Axiom-mail] Spad and inductive types

2007-05-09 Thread Ralf Hemmecke
On 05/09/2007 10:02 AM, Bill Page wrote: No, I think there is a serious misunderstanding here. What Gaby is talking about are algebraic data types. See for example: http://en.wikipedia.org/wiki/Algebraic_data_type In Gaby's example Haskell code: data Expr = MkInt Int | MkAdd

Re: [Axiom-mail] Spad and inductive types

2007-05-09 Thread Bill Page
Quoting Ralf Hemmecke [EMAIL PROTECTED]: On 05/09/2007 10:02 AM, Bill Page wrote: ... MkInt is *not* a function which when given an Integer returns something of type Expr. It is type *constructor*, that is, when given 'Int' MkInt returns a subtype of Expr. Before you criticize... I

Re: [Axiom-mail] Spad and inductive types

2007-05-09 Thread Ralf Hemmecke
Dear Bill, I only have a comment on the following. I agree that it's a source of confusion. But I must admit that I would have written MkInt: Int - Expr instead. Otherwise there would be a type mismatch in eval (MkInt i) = i since MkInt(Int) is not equal to Expr. Don't you agree?

Re: [Axiom-mail] Spad and inductive types

2007-05-09 Thread Gabriel Dos Reis
On Wed, 9 May 2007, Ralf Hemmecke wrote: | And I cannot say whether MkInt is a type constructor in Haskell, since I don't | know the language very well. MkInt is NOT a type constructor in Haskell; Bill was very confused. MkInt is a *data* constructor, and your understanding is correct. -- Gaby

Re: [Axiom-mail] Spad and inductive types

2007-05-09 Thread Gabriel Dos Reis
On Wed, 9 May 2007, Bill Page wrote: [...] | ... in Haskell, by a kind of convenient abuse of notation | (or polymorphism if you wish) 'MkInt' also denotes a | function | | MkInt: Int - MkInt Int | | that creates an object of type 'MkInt Int' from an object | in 'Int'. I think

Re: [Axiom-mail] Spad and inductive types

2007-05-09 Thread Bill Page
Quoting Ralf Hemmecke [EMAIL PROTECTED]: Dear Bill, I only have a comment on the following. I agree that it's a source of confusion. But I must admit that I would have written MkInt: Int - Expr instead. Otherwise there would be a type mismatch in eval (MkInt i) = i since

Re: [Axiom-mail] Spad and inductive types

2007-05-09 Thread Bill Page
Quoting Gabriel Dos Reis [EMAIL PROTECTED]: On Wed, 9 May 2007, Bill Page wrote: [...] | ... in Haskell, by a kind of convenient abuse of notation | (or polymorphism if you wish) 'MkInt' also denotes a | function | | MkInt: Int - MkInt Int | | that creates an object of type

Re: [Axiom-mail] Spad and inductive types

2007-05-09 Thread Ralf Hemmecke
Well, I did not interepret it as a slur against Haskell. However, it did appear to me to be fundamentally incorrect to miss the core ideas of algebraic data typea and how they lead to GADT: data Expr where MkInt:: Integer - Expr MkAdd:: Expr - Expr - Expr MkMul:: Expr -

Re: [Axiom-mail] Spad and inductive types

2007-05-09 Thread Gabriel Dos Reis
Bill Page [EMAIL PROTECTED] writes: | Quoting Gabriel Dos Reis [EMAIL PROTECTED]: | | On Wed, 9 May 2007, Bill Page wrote: | | [...] | | | ... in Haskell, by a kind of convenient abuse of notation | | (or polymorphism if you wish) 'MkInt' also denotes a | | function | | | |

Re: [Axiom-mail] Spad and inductive types

2007-05-09 Thread Gabriel Dos Reis
On Wed, 9 May 2007, Ralf Hemmecke wrote: | Well, I did not interepret it as a slur against Haskell. However, it did | appear to me to be fundamentally incorrect to miss the core ideas of | algebraic data typea and how they lead to GADT: | data Expr where |MkInt:: Integer - Expr

RE: [Axiom-mail] Spad and inductive types

2007-05-08 Thread Gabriel Dos Reis
On Tue, 8 May 2007, Bill Page wrote: | I have more to say later. | | We're listening. :-) One of the issues I have with many of the various alternatives is that they make definition of new functions operating on Expr also impossible (by a third person) without intimate knowledge of the

Re: [Axiom-mail] Spad and inductive types

2007-05-08 Thread Ralf Hemmecke
On 05/08/2007 05:21 PM, Gabriel Dos Reis wrote: One of the issues I have with many of the various alternatives is that they make definition of new functions operating on Expr also impossible (by a third person) without intimate knowledge of the representation of Expr, or modifying the Expr

Re: [Axiom-mail] Spad and inductive types

2007-05-08 Thread Bill Page
Quoting Ralf Hemmecke: ... I know the definitions in aaa.as look quite lengthy, but it probably shows how one could generically generate appropriate Aldor code from a more concise Syntax. Since Aldor is already intended to be pretty concise, I don't think it is a good idea in general to try

Re: [Axiom-mail] Spad and inductive types

2007-05-08 Thread Ralf Hemmecke
... I know the definitions in aaa.as look quite lengthy, but it probably shows how one could generically generate appropriate Aldor code from a more concise Syntax. Since Aldor is already intended to be pretty concise, I don't think it is a good idea in general to try to invent a new language

Re: [Axiom-mail] Spad and inductive types

2007-05-08 Thread Ralf Hemmecke
Ooops, I overlooked something. ---BEGIN bbb.as #include aldor #include aldorio #library EXPR aaa.ao import from EXPR; extend Expr: OutputType == add { import from 'MkInt', 'MkAdd', 'MkMul'; import from Integer; (tw: TextWriter) (x: %): TextWriter == { x case MkInt = tw

Re: [Axiom-mail] Spad and inductive types

2007-05-08 Thread Gabriel Dos Reis
On Tue, 8 May 2007, Ralf Hemmecke wrote: | But I thought that the Haskell | | data Expr = MkInt Int | | MkAdd Expr Expr | | MkMul Expr Expr | | is more like | | Union(Cross(Tag, Int), | Cross(Tag, Expr, Expr), | Cross(Tag, Exrp, Expr)). yes, conceptually, that

Re: [Axiom-mail] Spad and inductive types

2007-05-08 Thread Bill Page
Quoting Ralf Hemmecke [EMAIL PROTECTED]: ... Bill Page wrote: Ralf, these are just general comments about your approach and aren't intended to be particularly critical. Although I felt that it was the most critical reaction on one of my mails that I have ever experienced from you, I know

Re: [Axiom-mail] Spad and inductive types

2007-05-08 Thread Ralf Hemmecke
By the way. Today I have learned how to include an integer into the left or right part of Union(left: Integer, right: Integer). There appears only an example in the AUG, but not a formal description. Please tell. I missing the example. I think this is quite important. That should have been

Re: [Axiom-mail] Spad and inductive types

2007-05-07 Thread Martin Rubey
Dear Gaby, Gabriel Dos Reis [EMAIL PROTECTED] writes: For concretness, here is a very classic example of inductive type along with a function working on expression of such type, written in both Haskell and New Boot. How would you best write that in Spad? I'm very sorry, but I do not

RE: [Axiom-mail] Spad and inductive types

2007-05-07 Thread Bill Page
On May 7, 2007 2:28 AM Martin Rubey writes: Gabriel Dos Reis writes: For concretness, here is a very classic example of inductive type along with a function working on expression of such type, written in both Haskell and New Boot. How would you best write that in Spad? I'm very

Re: [Axiom-mail] Spad and inductive types

2007-05-07 Thread Martin Rubey
Here you go. But I doubt somehow that Gaby had this in mind, since this is quite usual stuff in Axiom (grep Rep.*Union) Martin )abbrev domain EX Expr Expr(): with eval: % - Integer coerce: Integer - % coerce: % - OutputForm _+: (%,%) - % _*: (%,%) - % == add MkInt ==

RE: [Axiom-mail] Spad and inductive types

2007-05-07 Thread Bill Page
Martin, On May 7, 2007 4:14 AM you wrote: Here you go. But I doubt somehow that Gaby had this in mind, since this is quite usual stuff in Axiom (grep Rep.*Union) ... Fantastic! Thankyou. See it again here: http://wiki.axiom-developer.org/SandBoxInductiveType I believe that is exactly

Re: [Axiom-mail] Spad and inductive types

2007-05-07 Thread Gabriel Dos Reis
Martin Rubey [EMAIL PROTECTED] writes: | Dear Gaby, | | Gabriel Dos Reis [EMAIL PROTECTED] writes: | |For concretness, here is a very classic example of inductive type | along with a function working on expression of such type, written in | both Haskell and New Boot. How would you best

Re: [Axiom-mail] Spad and inductive types

2007-05-07 Thread Ralf Hemmecke
http://wiki.axiom-developer.org/SandBoxInductiveType I've added an Aldor version. Ralf ___ Axiom-mail mailing list Axiom-mail@nongnu.org http://lists.nongnu.org/mailman/listinfo/axiom-mail

RE: [Axiom-mail] Spad and inductive types

2007-05-07 Thread Bill Page
On May 7, 2007 10:41 AM Gaby wrote: Martin Rubey writes: | Here you go. But I doubt somehow that Gaby had this in | mind, since this is quite usual stuff in Axiom (grep Rep.*Union) Thanks, Martin. I did not say I did not know how to write it. I said I don't have a good way :-).

[Axiom-mail] Spad and inductive types

2007-05-06 Thread Gabriel Dos Reis
Hi, While writing a tutotial on programming with Spad, I realize that I don't have a good way to present inductive types in Spad. I know what they would like in my ideal Spad, but we don't have that ideal Spad yet. So, I'm asking here how you would write inductive types in today Spad. For