
Christian Maeder wrote:
I've nothing against long names, but one shouldn't try to put blocks to the right of them.
This is very important from my point of view. Indention should not depend on identifier length. However, I make an exception to that rule sometimes for definitions which look like tables (e.g. step functions for abstract machines).
do c <- letter do d <- digit return [c, d] <|> do u <- char '_' return [c, u]
I try to avoid these, e.g. I would use this instead: do c <- letter choice [ do d <- digit return [c, d] , do u <- char '_' return [c, u] ] Actually, I try to avoid do-blocks, but that's a different story.
data TName = LongConstructorName { selector1 :: C1 , ... } | LongSecondConstructor .... deriving ...
I use data Maybe a = Just a | Nothing deriving Show or data Maybe a = Just { fromJust :: a } | Nothing deriving Show However, I would prefer the following Coq-like syntax: data Maybe a = | Just a | Nothing Tillmann