The 5 Ts of Industrial Haskell

by @eborden on March 14, 2019

What are 5 things that are essential for industrial Haskell?


Haskell is very expressive and has a high abstraction ceiling. Don’t be tempted to shoot off to the Moon. Every bit of code must pay its own way and advanced code must be justified. Spend most of your time in Haskell 98 and tastefully use other features when the cost of complexity gives you a large ROI.


Some Haskellers malign tests. In industry this is a foolish thing to do. Expressive types, pure functions, immutability and tests work in concert to create huge levels of assurance.


Haskell has great tooling. Get your team using it. hlint, weeder, hoogle, fast-tags, brittany, and more. These tools allow you to keep your codebase clean and discoverable.


Even experienced Haskellers will require training. There are very few opportunities for production Haskell work, so sharing experience is paramount. Found something good? Stubbed your toe? Share that information with your team in a sustainable way. Even better write a blog post and maintain a company blog.


For teams to work well they need to work together. This usually means establishing norms (Tuckman’s forming, storming, norming, performing). Haskell is a large language, figure out what Haskell means to your team. Document it. Code review it. Discuss it. Evolve it. Work with your team to decide what industrial Haskell looks like for you (this is different at every company).

This post was inspired by Question to professional Haskell developers.