[Haskell] Re: Use of tab characters in indentation-sensitive code

Andreas Rossberg rossberg at ps.uni-sb.de
Mon Jan 26 11:38:56 EST 2004

George Russell wrote:
> Graham Klyne wrote (according to Wolfgang Thaller, snipped):
>  > I think that compilers should issue a warning when indentation that
>  > determines the scope of a construct is found to contain tab characters.
> In an ideal world, TAB characters would never have been put into ASCII, and
> this would be my preferred solution.  However, since there would be some 
> people
> who would object to such purity, a better alternative might be
> (a) to allow
> m TABs followed by n spaces
> at the start of lines.
> (b) to denote the indention of the line by the two numbers (m,n).
> (c) to give an error message when comparing two indentions 
> (m1,n1),(m2,n2) where
> neither m1<=m2,n1<=n2, nor m1>=m2,n1>=n2.
> Incidentally Unicode allows far more possibilities for fun with 
> indentation (for example
> half-spaces, IIRC).

The most flexible but safe solution is to simply define the indentation 
as the sequence of indentation characters used. Two consecutive lines 
are indented consistently whenever one indentation is a prefix of the 
other. Hence you may freely mix different indentation characters, but 
you must be consistent across lines. Any decent editor should be able to 
ensure that.

With this solution, tab width is irrelevant and indentation may include 
whatever Unicode has.

	- Andreas

Andreas Rossberg, rossberg at ps.uni-sb.de

"Computer games don't affect kids; I mean if Pac Man affected us
  as kids, we would all be running around in darkened rooms, munching
  magic pills, and listening to repetitive electronic music."
  - Kristian Wilson, Nintendo Inc.

More information about the Haskell mailing list