Haskell at Front Row Education
github.com
github.com
At IMVU, we built up a bit of scaffolding along these lines: https://gist.github.com/andyfriesen/43d886ce60927c69b3d1
The basic premise is that all our business actions can either be run "for real" through Yesod, or within a State-based framework that's part of our standard testing scaffold.
The end result is that it's trivial to write tests that arrange for the database, clock, sockets, and so forth to be in precisely the state we want them to be for the test, and to sense everything afterward.
Running these tests as pure State actions has additional benefits:
Since State operates by making successive state copies for each "mutation", test fixtures are easily effected by performing some actions and saving the produced state. Individual tests can start from this state as many times as desired. The state is immutable, so test interference is impossible.
Additionally, tests run without access to IO. This means that the compiler rejects any test which could forseeably intermittently fail.
We don't actually use any of Yesod's affordances except for its router. We're aiming to eventually split that off and run on bare Warp.
All those extra bells and whistles are wasted on us. :)
This article explains nicely why Haskell _could_ be an SSW, and specifically in what cases it might is more likely to be. It nicely walks through the strengths and the weaknesses, and compares to the previous experiences with clojure/ruby.
You hint at the solution to this problem when you mention caching, but I would encourage you to look into the Nix package manager. It's platform and language independent, and is excellent at dramatically speeding up builds by only building anything once. It's gaining popularity in the Haskell community.
[0]: https://ocharles.org.uk/blog/posts/2014-02-04-how-i-develop-...
Shameless plug: we're hiring. If writing Haskell to improve education seems like a good idea, check out the role at http://functionaljobs.com/jobs/8823-haskell-web-engineer-at-...
Thanks for writing.
What was the CPU issue, and how did you solve it? I'm referring to the "Strength in numbers" section (https://github.com/commercialhaskell/commercialhaskell/blob/...).
Wow, I was not aware of this.
Generally a good book, with some puzzling typos, IIRC (a year or so since i read it), he refers to Platform when he shd be referring to GHC
______________________________________________________________
there's also recent books by Richard Bird and Simon Thompson, and the Haskell School of Music, which was recently discussed:
https://news.ycombinator.com/item?id=9487881
http://www.amazon.com/Thinking-Functionally-Haskell-Richard-...
I'm vaguely suspecting some sort of resource contention issue. A good way to figure that out would be to run a profiled build with that many cores, assuming that's at all possible.
http://adambard.com/blog/core-typed-vs-haskell/
http://www.reddit.com/r/Clojure/comments/2hql2h/why_is_coret...
It could be really good if it's inference engine was improved, I can see a LOT of potential. But it just isn't there yet.
Other than that the major risk is of a space leak. In a web service model you generally won't write the sever or the database connection and therefore will be masked from long-running memory hog computations.
[1]: http://cpmed.de/