DEV Community

Riccardo Odone
Riccardo Odone

Posted on • Updated on • Originally published at

Rewriting to Haskell–Automatic Formatting

You can keep reading here or jump to my blog to get the full experience, including the wonderful pink, blue and white palette.

This is part of a series:

One comment in a pull request about code formatting was enough to convince us we needed a tool to solve the problem once for all!

We decided to go with Ormolu because it's really similar to how Elm Format behaves. In particular, from the readme, among other things:

Implementing one "true" formatting style which admits no configuration.


Let some whitespace be programmable. The layout of the input influences the layout choices in the output. This means that the choices between single-line/multi-line layouts in each particular situation are made by the user, not by an algorithm. This makes the implementation simpler and leaves some control to the user while still guaranteeing that the formatted code is stylistically consistent.

To install Ormolu it's enough to run the following:

stack install ormolu
Enter fullscreen mode Exit fullscreen mode

Then formatting can be checked in CI with:

ormolu -m check **/*.hs
Enter fullscreen mode Exit fullscreen mode

Or formatted with:

ormolu -m inplace **/*.hs
Enter fullscreen mode Exit fullscreen mode

Also, plugins are available to automate formatting whenever a Haskell file is saved! In VIM it works really well:

Gif showing Ormolu formatting a Haskell file in a VIM buffer

Get the latest content via email from me personally. Reply with your thoughts. Let's learn from each other. Subscribe to my PinkLetter!

Top comments (0)