Learn professional-grade Haskell coding practices quickly and efficiently
Want more guidance in the learning process? Learn about FP Complete's training programs.
FP Complete recommends the following syllabus to get up to speed with commercial-grade Haskell coding efficiently.
This outline provides a wide array of content, focused on practical lessons towards writing real-world applications. It presumes a basic knowledge of Haskell, as would be gained from books such as Haskell Programming from First Principles
Where available, we will provide links to online documentation on a topic.
You understand the basics of Haskell syntax and some common library functions. This section should get you up to speed with many commonly used features of Haskell, to provide a foundation for understanding code in general, and to follow the rest of this outline in particular.
Covers some of the most commonly used data structures in Haskell, and the libraries providing them.
This section demonstrates some common Haskell coding patterns, how they work, when they're useful, and possible pitfalls.
Simon Marlow's book Parallel and Concurrent Programming in Haskell is a highly recommended read on the subject. In addition, we have the following topics:
MVarfor two threads,
TVarfor multiple threads
Web programming is another topic with many different approaches. Like streaming data, we need an overview of the different options, and then a drilldown on individual approaches. For now:
The following libraries are somewhat "large" in the sense that they address many different concerns.
Sometimes it is useful to use an alternative to the standard
include avoiding cross-version incompatibility, support for better data
structures, and avoiding partial functions. Here are some commonly used
preludes (in alphabetical order).
As a project grows, there are many "patterns" that might save developer some time by just doing some restructuring work. Some tricks might save development time, while others help to re-compile less.
As part of "commercial haskell", I think it would be great to have both, haskell-specific and non-specific description with examples in haskell for how do you manage all the standard needs for your application infrastructure and support. Some topics would include:
Don't forget to also check out our devops syllabus.