Here are a few other styles I use:
* Unicode syntax and symbols I use the UnicodeSyntax extension in all my projects. It allows you to write nice Unicode syntax instead of the normal ASCII art. For example: '→' instead of '->' and '∀' instead of 'forall'. Additionally I'm a power-user of my brother's base-unicode-symbols package[1]. I'm especially fond of the '∘' function composition operator which you can use instead of '.'. I believe UnicodeSyntax and symbols make code easier to read. Although, it makes it slightly harder to write (see [2] for nice input methods however). * Use lambdas to group function arguments. When I have a function which returns another function with a type that is explicitly named, instead of listing all the arguments before the =, I usually use a lambda to indicate that the function returns another function. Take [3] for example: readControl ∷ DeviceHandle → ControlAction ReadAction readControl devHndl = \reqType reqRecipient request value index → \size timeout → ... writeControl ∷ DeviceHandle → ControlAction WriteAction writeControl devHndl = \reqType reqRecipient request value index → \input timeout → ... where type ControlAction α = RequestType → Recipient → Request → Value → Index → α type ReadAction = Size → Timeout → IO (B.ByteString, TimedOut) type WriteAction = B.ByteString → Timeout → IO (Size, TimedOut) (I'm not sure if this has a negative effect on inlining tough.) Regards, Bas [1] http://hackage.haskell.org/package/base-unicode-symbols [2] http://haskell.org/haskellwiki/Unicode-symbols#Input_methods [3] http://hackage.haskell.org/packages/archive/usb/0.6.0.1/doc/html/src/System-USB-Internal.html#readControl _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe