[Haskell-cafe] Which tab width do you prefer for Haskell code?

Christopher Allen cma at bitemyapp.com
Tue Aug 30 05:35:32 UTC 2016

When most Haskellers say tab width, they're colloquially referring to
how many literal spaces each "indent" action should be.

That is the case here as well. Most Haskellers I know do not use tabs
at all to avoid indent issues, unlike Golang which is exclusively

On Mon, Aug 29, 2016 at 10:56 PM, Richard A. O'Keefe <ok at cs.otago.ac.nz> wrote:
> On 30/08/16 6:09 AM, Christopher Done wrote:
>> Hi everyone,
>> I'm trying to get a feel for the modern Haskell community's opinion on
>> default tab-width for HIndent. Here is a link to the online poll:
>> http://doodle.com/poll/82xf854t9mmuv22h#table
>> Quote:
>>> For the HIndent tool we'd like to choose the standard tab width.
>>> For now, it is 4, the width set by the Johan Tibell style guide.
>>> A survey of 1000 top-downloaded packages on Hackage reveals about 50-50
>>> either
>>> way:https://gist.github.com/chrisdone/e3d1796d8f5df717b91db54aae36c440
>>> HIndent is meant as a "community standard" tool; it should reflect the
>>> community's actual practice. If there's a clear preference for 2, we'll
>>> switch to that. Otherwise, we remain with 4.
> There seems to be some confusion here.
> The Johan Tibell style guide does NOT "set"
> "the standard tab width" to 4.  Far from it!
> The guide says plainly "TABS ARE ILLEGAL".
> What the style guide talks about is INDENTATION steps.
> Not tab width!
> When it comes to TAB width, the Haskell 2010 report
> is explicit and unambiguous, leaving no room for
> anyone's preferences.  Chapter 10 says
>         The "indentation" of a lexeme is the column number
>         of the first character of that lexeme;
>         the indentation of a line is the indentation of
>         its leftmost lexeme.
>         To determine the column number, assume a fixed-
>         width font with the following conventions:
>         * The characters newline, return, linefeed,
>           and formfeed, all start a new line.
>         * The first column is designated column 1, not 0.
>         * A tab character causes the insertion of enough
>           spaces to align the current position with the
>           next tab stop.
> _______________________________________________
> Haskell-Cafe mailing list
> To (un)subscribe, modify options or view archives go to:
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> Only members subscribed via the mailman list are allowed to post.

Chris Allen
Currently working on http://haskellbook.com

More information about the Haskell-Cafe mailing list