|     Is there a tutorial or simple sample Haskell scripts that
| demonstrate the use of Haskell Thread??. I know that Haskell
| threads are monad.

There is now!

I'd like to take this opportunity to offer my draft Marktoberdorf
Summer School notes, and to invite members of the Haskell community
to help improve them.  They are (currently) entitled:

        Tackling the Awkward Squad: monadic I/O, concurrency, exceptions,
        and foreign-language calls in Haskell.

        http://research.microsoft.com/~simonpj/papers/marktoberdorf.ps.gz

This 40-page tutorial focuses on explaining the "bits round
the edges" of Haskell programs, rather than the beautiful
functional core we all know and love. More specifically, it
gives, in a single framework, an account of

        monadic input/output (the I/O monad)
        concurrency (threads, MVars)
        exceptions (both synchronous and asynchronous)
        foreign language interfaces

The common feature of all of these is, of course, the ubiquitous
I/O monad.  All except the first (basic I/O) involve proposed
extensions to Haskell that are implemented in GHC, and I have
tried hard to make the tutorial use exactly the same function
names as GHC does.   All of the extensions are described in
conference papers (also available from my home page), but these
papers are not tutorials, and were written with varying nomenclature
over a period of several years.  I hope that this tutorial gives a
more comprehensible overview of the big picuture, using a common
vocabulary.

The tutorial also gives an operational semantics for everything
described except the foreign-language interface part.  For this
I borrow the framework of operational semantics --- but don't worry!
My intention is that you don't need to know a thing about operational
semantics to understand the paper.


So much for what I hope and intend!  But only you can tell me 
whether these hopes are justified.  I have to deliver camera ready
copy in early November, and I would VERY MUCH APPRECIATE your help in 
improving the notes before then.

If you read them, please let me know of 

        any errors you find

and, (more importantly)
        
        suggestions for improving them

The latter might take the form of "I figured out X eventually,
but I wish you'd stated it explicitly", or even "I just got lost
in the third paragraph of section 4.3".  The more concrete your
suggestions, the more likely I will be able to do something about them.

Happy reading

Simon

Reply via email to