for one prefer the coding style exchangeable between space and tab indentation
where, let, in, case of, do, if, then, else, deriving, =, ->, ::, (, [, {
discriminate among guard, 'or' as logic and 'or' in data
if then else, case of, (), [], {}
type, newtype, data, class, instance
-- always start at head of line
foo x y =
x + y
--cursor was here but
type Foo = Int
module Foo where
-- no indent
module Foo (
A,
B ) where
-- no indent
where, deriving, infix, function
where, let, | in data, enumrate with enclosure and comma
foo = (bar, bazz)
where bar = 0
bazz = 1
let a = 0
b = 1
in a + b
data Foo = One
| Two
| Three
foo =
[ bar
, bazz
, pon
]