[Haskell-cafe] New book: Real-World Haskell!

Hans van Thiel hthiel.char at zonnet.nl
Wed May 23 10:23:24 EDT 2007


On Wed, 2007-05-23 at 17:01 +1000, Donald Bruce Stewart wrote:
> Bryan O'Sullivan, Don Stewart and John Goerzen are pleased, and frankly,
> very excited to announce that were developing a new book for O'Reilly, on
> practical Haskell programming. The working title is Real-World Haskell.
> 
> The plan is to cover the major techniques used to write serious,
> real-world Haskell code, so that programmers can just get to work in the
> language. By the end of the book readers should be able to write real
> libraries and applications in Haskell, and be able to:
> 
>     * design data structures
>     * know how to write, and when to use, monads and monad transformers
>     * use Haskells concurrency and parallelism abstractions
>     * be able to write parsers for custom formats in Parsec.
>     * be able to do IO and binary IO of all forms
>     * be able to bind Haskell to foreign functions in C
>     * be able to do database, network and gui programming
>     * know how to do exception and error handling in Haskell
>     * have a good knowledge of the core libraries
>     * be able to use the type system to track and prevent errors
>     * take advantage of tools like QuickCheck, Cabal and Haddock
>     * understand advanced parts of the language, such as GADTs and MPTCs.
> 
> That is, you should be able to just write Haskell!
> 
> The existing handful of books about Haskell are all aimed at teaching
> programming to early undergraduate audiences, so they are ill-suited to
> people who already know how to code. And while theres a huge body of
> introductory material available on the web, you have to be both
> tremendously motivated and skilled to find the good stuff and apply it
> to your own learning needs.
> 
> The time has come for the advanced, practical Haskell book.
Great, this surely meets a demand and I'll buy it, for sure.

Here's my wish list:
> 
> Heres the proposed chapter outline:
> 
>    1. Why functional programming? Why Haskell?
Compared to Erlang. While other functional languages are mentioned
occoasionally on this list, Erlang is notably absent. This while the
Erlang processes seem to be very useful, especially for concurrency and
embedded systems programming. Is Haskell useful for embedded systems at
all?
>    2. Getting started: compiler, interpreter, values, simple functions, and types
>    3. Syntax, type system basics, type class basics
>    4. Write a real library: the rope data structure, cabal, building projects
>    5. Typeclasses and their use
>    6. Bringing it all together: file name matching and regular expressions
>    7. All about I/O
>    8. I/O case study: a DSL for searching the filesystem
>    9. Code case study: barcode recognition
>   10. Testing the Haskell way: QuickCheck
>   11. Handling binary files and formats
>   12. Designing and using data structures
>   13. Monads
>   14. Monad case study: refactoring the filesystem seacher
>   15. Monad transformers
>   16. Using parsec: parsing a bioinformatics format
All great!
>   17. Interfacing with C: the FFI
Number two on my wish list: interfacing with Java. Not because of the
language, but the many libraries. For instance, there is a Java library
to interface with the open document format, something I'd like to do. I
know there is a Haskell Java interface, but it seems to be outside of
the mainstream and hardly documented. Or am I wrong?
>   18. Error handling
>   19. Haskell for systems programming
>   20. Talking to databases: Data.Typeable
Yes.
>   21. Web client programming: client/server networking
>   22. GUI programming: gtk2hs
>   23. Data mining and web applications
>   24. Basics of concurrent and parallel Haskell
>   25. Advanced concurrent and parallel programming
>   26. Concurrency case study: a lockless database with STM
>   27. Performance and efficiency: profiling
>   28. Advanced Haskell: MPTCs, TH, strong typing, GADTs
>   29. Appendices
Number one on my wish list: maybe this will be covered in the chapters
so far, but what about lazy versus strict? I understand the importance
of laziness to define infinite lists and other data structures, but not
the impact on performance and what to look out for when writing code.
Similarly safe and unsafe and memoization. Could this be a separate
chapter?
> 
> We're seeking technical reviewers from both inside and outside the
> Haskell community, to help review and improve the content, with the
> intent that this text will become the standard reference for those
> seeking to learn serious Haskell. 
A critical note here. Before you can learn 'serious' Haskell you'll have
to learn basic Haskell. I'm sure it is unintentional, but avoid any
impression of superiority. Writing a good text book is very hard and
very time consuming, and succesful communication with an audience is a
separate skill. How about 'Applying Haskell' or something like that as
the working title; what is the 'real world' anyway?

But I'll be looking forward to the book, whatever its name!

Regards,

Hans van Thiel

> If you'd like to be a reviewer, please
> drop us a line at book-review-interest at realworldhaskell.org, and let us
> know a little about your background and areas of interest.
> 
> Finally, a very exciting aspect of this project is that O'Reilly has
> agreed to publish chapters online, under a Creative Commons License!
> Well be publishing chapters incrementally, and seeking feedback from our
> reviewers and readers as we go.
> 
> You can find more details and updates at the following locations:
> 
>     * The web site, http://www.realworldhaskell.org/blog/welcome/
>     * The authors,  http://www.realworldhaskell.org/blog/about/
>     * The blog,     http://www.realworldhaskell.org/blog/
> 
> -- Bryan O'Sullivan, Don Stewart and John Goerzen.
> 



More information about the Haskell-Cafe mailing list