Lars Oppermann wrote:

I would love to hear your comments on this. Has this been done over and over already? Are there any source which you think of from the top of your head which I should check out? Books that you would want to recommend?
Sounds interesting.  I for one would like to read a study along these lines.

As I wrote above, I'm quite new to Haskell. Thus if anyone wants to recommend some readings specifically on the aspect of modeling in a functional environment I'd be happy to hear about that too.

I'm not sure what you mean by "modelling": functional programmers don't see modelling as separate from coding: the code is the model, and if thats not abstract enough then you didn't do it right.

Take a look at some good examples of combinator libraries. Parsec and QuickCheck are good case studies. Examine the interfaces, and see how the model shines through. Understand how monads are used to model different ideas of control flow (especially the list monad, and also backtracking in Parsec). If you can get your head around it you might also look at the continuation monad and see how it can be used as the foundation for arbitrary flow of control concepts. Finally compare the use of monad transformers with "aspect oriented" programming.

You might also read the "poor mans concurrency" paper http://www.cs.chalmers.se/~koen/pubs/jfp99-monad.ps. The dialect of Haskell is obsolete, but you'll get the idea.

Don't get too hung up on monads. Also study applicative functors and arrows. Applicative functors are probably easier to figure out at first. Arrows are what you get when you cross applicative functors with monads (more or less).

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

Reply via email to