On 25 Apr 2009, at 8:59 pm, Miguel Mitrofanov wrote:

Something like

newtype MyCoolMonad = MyCoolMonad (FirstTransformer (SecondTransformer (ThirdTransformer Whatever))) deriving (Functor, Monad, FirstClass, SecondClass, ThirdClass, SomeOtherClass)

Nobody would be really interested in "deriving" clause, because it basically says "derive everything possible". Therefore, it seems pointless to move it to another line.

For what it's worth, my personal Haskell style lines up

data T
   = C1 ...
   | ...
   | Cn ...
   deriving (...)

so I'd have this as

newtype MyCoolMonad
= MyCoolMonad (FirstTransformer (SecondTransformer (ThirdTransformer Whatever))) deriving (Functor, Monad, FirstClass, SecondClass, ThirdClass, SomeOtherClass)

where the longest line is 86 columns.

I would regard putting the 'deriving' clause on the same line as
'newtype' as obfuscatory except perhaps in the most trivial case.

I wouldn't be at all happy with 86 columns, so I'd shrink it further.

But this is progress.

We've moved from "is a 200-column line reasonable"
to "is attaching an already long deriving clause to the end of the
    previous line on the grounds that nobody will be interested in
    it"
good layout style or not, and why/why not?

I'll note there that the costs and benefits are, as usual,
asymmetric.  Someone who already understands what this is
all about, in particular someone who knows what "everything
possible" is, will be helped by hiding irrelevant detail (if
this _is_ a way to hide it).  Someone other than the author
may very well not know this, and this deriving clause may
even be the way that they learn it.


_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to