
On Monday 27 September 2010 18:09:08, Evan Laforge wrote:
data Foo a b = Foo a | Bar b | Foobar a b deriving (Eq, Ord)
There, that looks good.
There is a trap if you do a similar thing with records:
data Foo = Foo { a :: Int , b :: Int }
If you use '-- |' style haddock it can't go on 'a'. Since I tend to want to put '-- |' on every field, I have to put the '{' on the previous line.
Hm, yes. I always use '-- ^' haddock comments for record fields, so that didn't occur to me.
As for other stuff, I don't like the vertical lining up thing. It's
I haven't tried it yet. I think aligning corresponding fields has advantages - it makes it rather obvious to see which constructor uses which parameter types in many cases. On the other hand, with many fields you get a very scattered picture if some constructors only have few. That looks ugly and isn't easy to take in at a glance. I don't think I'll adopt it, but I plan to try it out.
too much work to type in, causes too much realigning when the top line changes, sometimes causes things to get too far right,
Yep
and breaks entirely with proportional fonts.
Not relevant for me, when looking at Haskell or Python code, I value my fixed-width font, it just looks too weird in proportional fonts.
A plain indent as advocated above avoids all those problems.