[Haskell-cafe] Re: Newbie question: Where is StackOverflow on the Wiki?

2007-08-23 Thread apfelmus

Neil Mitchell wrote:

sum (enum 1 10) =
sum' 0 (enum 1 10)  =
...

sum' 36 (9 : enum (9+1) 10)  =
(sum' $! (36+9)) (enum (9+1) 10) =
sum' 45 (enum (9+1) 10)  =
sum' 45 []   =
45

(I need to find some way to automate making these trails :) )

Yes! We'd need such an automatic tool for the wikibook, too.


The problem is that Haskell is ridiculously complex, and the small
step interpretation is much harder than you'd think. For example, sum
may well be defined as foldl' (+) 0, which is a CAF, so gets reduced
once. The 0 won't actually be a 0, but will be fromInteger 0, which
will correspond to looking up an item in the dictionary and applying
it. Dictionaries especially make the simple interpretation
completely wrong.

It's easy to do informally, but once you start being more precise, its
very complex.


Yeah, the precise details may vary, even :) But for teaching, an 
automatic tool that does graph reduction would be great. I don't mind if 
it's sloppy (directly apply definitions  pattern matching VS everything 
is a lambda abstraction) and only does simply typed lambda calculus (no 
type applications, no type classes).


Regards,
apfelmus

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Re: Newbie question: Where is StackOverflow on the Wiki?

2007-08-23 Thread Peter Verswyvelen
I think DrScheme does that for Scheme. So a must have for Haskell! Maybe could 
be added to the Helium project?

- Oorspronkelijk bericht -
Van: apfelmus [mailto:[EMAIL PROTECTED]
Verzonden: donderdag, augustus 23, 2007 08:00 PM
Aan: haskell-cafe@haskell.org
Onderwerp: [Haskell-cafe] Re: Newbie question: Where is StackOverflow on the   
Wiki?

Neil Mitchell wrote:
 sum (enum 1 10) =
 sum' 0 (enum 1 10)  =
 ...

 sum' 36 (9 : enum (9+1) 10)  =
 (sum' $! (36+9)) (enum (9+1) 10) =
 sum' 45 (enum (9+1) 10)  =
 sum' 45 []   =
 45

 (I need to find some way to automate making these trails :) )
 Yes! We'd need such an automatic tool for the wikibook, too.
 
 The problem is that Haskell is ridiculously complex, and the small
 step interpretation is much harder than you'd think. For example, sum
 may well be defined as foldl' (+) 0, which is a CAF, so gets reduced
 once. The 0 won't actually be a 0, but will be fromInteger 0, which
 will correspond to looking up an item in the dictionary and applying
 it. Dictionaries especially make the simple interpretation
 completely wrong.
 
 It's easy to do informally, but once you start being more precise, its
 very complex.

Yeah, the precise details may vary, even :) But for teaching, an 
automatic tool that does graph reduction would be great. I don't mind if 
it's sloppy (directly apply definitions  pattern matching VS everything 
is a lambda abstraction) and only does simply typed lambda calculus (no 
type applications, no type classes).

Regards,
apfelmus

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe




___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


[Haskell-cafe] Re: Newbie question: Where is StackOverflow on the Wiki?

2007-08-21 Thread apfelmus

Stefan O'Rear wrote:

sum (enum 1 10) =
sum' 0 (enum 1 10)  =
...

sum' 36 (9 : enum (9+1) 10)  =
(sum' $! (36+9)) (enum (9+1) 10) =
sum' 45 (enum (9+1) 10)  =
sum' 45 []   =
45

(I need to find some way to automate making these trails :) )


Yes! We'd need such an automatic tool for the wikibook, too.

Regards,
apfelmus

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Re: Newbie question: Where is StackOverflow on the Wiki?

2007-08-21 Thread Neil Mitchell
Hi

  sum (enum 1 10) =
  sum' 0 (enum 1 10)  =
  ...
 
  sum' 36 (9 : enum (9+1) 10)  =
  (sum' $! (36+9)) (enum (9+1) 10) =
  sum' 45 (enum (9+1) 10)  =
  sum' 45 []   =
  45
 
  (I need to find some way to automate making these trails :) )

 Yes! We'd need such an automatic tool for the wikibook, too.

The problem is that Haskell is ridiculously complex, and the small
step interpretation is much harder than you'd think. For example, sum
may well be defined as foldl' (+) 0, which is a CAF, so gets reduced
once. The 0 won't actually be a 0, but will be fromInteger 0, which
will correspond to looking up an item in the dictionary and applying
it. Dictionaries especially make the simple interpretation
completely wrong.

It's easy to do informally, but once you start being more precise, its
very complex.

Thanks

Neil
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Re: Newbie question: Where is StackOverflow on the Wiki?

2007-08-21 Thread Andrew Coppin

Neil Mitchell wrote:

Hi

  

(I need to find some way to automate making these trails :) )
  

Yes! We'd need such an automatic tool for the wikibook, too.



The problem is that Haskell is ridiculously complex, and the small
step interpretation is much harder than you'd think. For example, sum
may well be defined as foldl' (+) 0, which is a CAF, so gets reduced
once. The 0 won't actually be a 0, but will be fromInteger 0, which
will correspond to looking up an item in the dictionary and applying
it. Dictionaries especially make the simple interpretation
completely wrong.

It's easy to do informally, but once you start being more precise, its
very complex.
  


Like I said, I made a tool in Tcl that works. If you program in 
partially-parsed Haskell by hand first for all the functions it calls. 
(Except a few basic math ops.) Indeed, it was by playing with this tool 
that I first discovered why foldl' needs to exist! ;-)


So, making a tool that you can set up to quickly generate an automated 
trace is quite easy. If you want a tool where you can just casually toss 
arbitrary Haskell at it and expect sensible answers... hmm... that's 
going to be kinda tricky. (!)


(I had a go at it myself, several times. Each time I was tripped over by 
being unable to correctly parse arbitrary Haskell code. I never even got 
to writing the execution engine...!)


I think a lot of people will agree that if such a tool existed it could 
be a *tremendous* help in many, many ways - a tool for experimenting and 
teaching, finding out why your really-complicated-function behaves 
wrong, checking out strictness properties, etc. But somebody has to 
write it first.


It's ironic really; Haskell *looks* so easy to single-step. ;-)

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe