[Haskell-cafe] Re: Tutorial on Haskell

Donald Bruce Stewart dons at cse.unsw.edu.au
Mon Apr 16 16:29:27 EDT 2007

> Simon Peyton-Jones <simonpj at microsoft.com> writes:
> > My guess is that they'll be Linux/Perl/Ruby types, and they'll be
> > practitioners rather than pointy-headed academics.
> >         Suggest concrete examples of programs that are
> >                 * small
> >                 * useful
> >                 * demonstrate Haskell's power
> >                 * preferably something that might be a bit
> >                         tricky in another language
> > But there must be lots of others.  
> As one of those python/ruby types trying to learn Haskell for the past
> year, here are my suggestions for small examples:
> - Tom Moertel's Haskell Port Scanner
>   Why? Demonstrates concurrent haskell in a small amount of lines
>   http://blog.moertel.com/articles/2004/03/13/concurrent-port-scanner-in-haskell
> - A web-server example of some sort that interfaces with a database
>   and uses some interesting HTML combinator library.
> - Building a simple unit testing framework is always a good example
>   (even though they already exist), and then introducing quickcheck
>   perhaps.

It's interesting to note that QuickCheck generalises unit testing:
zero-arity QC properties are exactly unit tests.

> - A program to concurrently verify the links on an HTML page
>   recursively.  I'm sure there are lots of interesting idioms and
>   techniques that could be used while keeping the code small and
>   elegant.

Ah, there's a (parallel) program I wrote for this, urlcheck. 


I had meant to use this as a basis for a blog article, but didn't get
around to it.

> - Perhaps a Haskell version of Norvig's 20-line Python Spell Checker:
>   Why? Maybe a Haskell version could be shorter and more elegant?
>   http://norvig.com/spell-correct.html
> - Tom Moertel's Directory Tree Printing in Haskell:
>   Why? Demonstrates all sorts of introductory techniques
>   http://blog.moertel.com/articles/2007/03/28/directory-tree-printing-in-haskell-part-three-lazy-i-o
> Some thoughts on other topics suggested by others:
> - Parsec is not that interesting for those coming from perl, ruby, or
>   python as they rely on regular expressions for everything and just
>   expect that they are part of the language.  The thought of writing
>   one's own parser is not as "cool" as most Haskellers believe it is,
>   regardless of how interesting the parsec library is.

That's a useful insight.
> - STM may be too complex of a subject for an intro to Haskell
>   tutorial.  There are just too many concepts in there that may
>   overwhelm some beginners.
> - Don's post on shell scripting was very interesting, but I'm still
>   having a hard time understanding some parts of it, the error
>   handling part, and I've been playing with Haskell on and off for the
>   past year (I'm also a slow learner and not an academic).

Interesting! Thanks for the feedback.
> - Don's post on simple UNIX utilities was also quite nice. I believe
>   he also wrote a simple IRC bot example that would prove
>   interesting, can't seem to find the link at the moment though.

> Just my thoughts as a newbie desiring a book on how to use Haskell in
> a practical manner (such as Practical Common Lisp book).

Don't we all! :-)

-- Don

More information about the Haskell-Cafe mailing list