What haskell topics need to be addressed in a Real-World-Haskell style?
It has been quite some开发者_StackOverflow中文版 time now that RWH came out (almost 3 years). I was eager to get my copy after following the incremental writing of the book online (which is, I think, one of the best ways to write a book.) What a rewarding read in the midst of all the rather academic papers a haskell student usually encounters!
It was a sturdy companion on quite some trips and I refer back to it regularly. Still, my copy started to look pretty battered and even though most of the content is still valid, there has been an abundance of new topics in the haskell world that would be worth covering in a similar fashion.
Considering the impact RWH had (and still has,) I sincerely hope that there will be a sequel some day :) Some of the topics for a sequel that would immediately come to my mind:
- Iteratees
- more on concurrent programming in haskell
- merits and dangers of lazy evaluation
- possibly covering some common libraries that deal with this
- in particular lazy io
- new ghc features (e.g. the new I/O Manager, LLVM code generator)
- Memoization
- ..
What are the topics that the haskell community needs a RWH-style explanation for?
this is a summary of the suggestions so far:
Concepts
- Iteratees / lazy IO
- Arrows
- ghc event manager
Techniques
- generics (uniplate, syb)
- metaprogramming (Template Haskell)
- data structures (use of functional datastructures, designing data structures)
- EDSLs (designing EDSLs)
- memoization
- designing with monads
- best practices for imperative programming
Tools
- ThreadScope
- Advanced FFI tools (c2hs, using Haskell from C)
- cabal
- haddock
- hoogle
- Tuning the runtime, esp. GC flags
- Djinn
Libraries
- arrays and array programming (vector, repa, hmatrix)
- numerics (random numbers)
- parallel programming (The Par monad)
- unicode and locales (text, text-icu)
- parsing (attoparsec, tagsoup)
- networking (snap, yesod)
- web stuff (templating)
- persistance (especially no-sql storage bindings)
- graphics (cairo, sdl, opengl)
- xml (haxml)
- crypto
- processors and systems stuff
Here's my take, biased towards the ecosystem.
Libraries
- arrays and array programming:
vector
repa
hmatrix
- numerics
- random numbers
- parallel programming
- The
Par
monad
- The
- unicode and locales
text
andtext-icu
- parsing
attoparsec
tagsoup
- networking
snap
and/oryesod
- web stuff
- templating
- persistance
- databases beyond
hdbc
- no-sql storage bindings
- databases beyond
- graphics
cairo
sdl
opengl
- xml
haxml
- crypto
- processors and systems stuff
Techniques
- generics
uniplate
syb
- metaprogramming
- Template Haskell
- data structures
- designing data structures
- EDSLs
- designing EDSLs
- memoization
- designing with monads
Tools
ThreadScope
- Advanced FFI tools
c2hs
- using Haskell from C
- Tuning the runtime, esp. GC flags
I would love to see:
- Cabal & Hoogle & Haddock (best practices for the daily
code
-build
-test
-deploy
workflow) - Available datastructures and their (real world) usage, performance and space characteristics
- Data Visualization
- Best practices for imperative programming
- Yesod & Snap
- More on Database Connectivity (SQL and NoSQL)
- More on Network Programming
The "More on..." might be better placed in a "Haskell Cookbook" though.
These are less "real worldy", but I'd like to see helpful introductions (and possible Real World applications?) to
- Djinn
- Template Haskell
- Arrows
I've been meaning to ask this exact same question! I would buy RWH vol2 if it contained the items in the list so far. I would also like to real world examples for (in no particular order)
- GADTs
- type families
- techniques for heterogeneous lists
- Typeclassopedia style presentation of standard typeclasses
- a fuller explanation of Edward Yang's Type Technology Tree
- records / lenses
I would love to see an "RWH approach" to functional reactive programming - a RWH version of this, maybe covering Yampa or something similar. But maybe this topic is not quite "real-worldy" enough (yet)...
I am only recently new to Haskell and have only read a few chapters of this book and Programming in Haskell by Graham Hutton
However, I would have to agree with Alexander in the sense I would love to see a "Haskell Cookbook" as well as a new more updated version of RWH (As I have yet to finish this is not as important personally for me!).
Advice and sample codes to do with Dates, Generating Random Numbers and the most efficient codes to perform key algorithms (Sorting etc.) would be a great addition to any such book!
精彩评论