adding CodingStyle.
This commit is contained in:
parent
d1cea9a0c7
commit
4a02a02409
45
CodingStyle
Normal file
45
CodingStyle
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
* GHC support
|
||||||
|
|
||||||
|
GHC 7.4, 7.6 and 7.8 are supported at this moment. If GHC 7.10 is
|
||||||
|
released, the support for GHC 7.4 will be discontinued.
|
||||||
|
|
||||||
|
|
||||||
|
* Compiler warnings
|
||||||
|
|
||||||
|
All compiler warnings generated by the latest stable GHC with "-Wall"
|
||||||
|
MUST be eliminated.
|
||||||
|
|
||||||
|
|
||||||
|
* Deceleration style
|
||||||
|
|
||||||
|
Try to use "where" instead of "let".
|
||||||
|
|
||||||
|
|
||||||
|
* Error handling
|
||||||
|
|
||||||
|
As a general rule of thumb anything that can fail (as in the Monad
|
||||||
|
method) should get a surrounding catchError with a description of what
|
||||||
|
the function was trying to do. If a function is trying to do more than
|
||||||
|
one thing it should probably be split up into multiple seperate
|
||||||
|
functions anyways.
|
||||||
|
|
||||||
|
All uses of the major partial functions (i.e fromJust, fromLeft, head
|
||||||
|
etc.) should probably be replaced by pattern matching in the do block
|
||||||
|
(since pattern match failures are very easy to handle with
|
||||||
|
catchError).
|
||||||
|
|
||||||
|
We also have to be careful with anything that uses liftIO since that
|
||||||
|
might introduce unexpected exceptions. For example parseCabalFile
|
||||||
|
still uses IOError's for error reporting which would circumvent ErrorT
|
||||||
|
and make handling that error with MonadError impossible. Stuff like
|
||||||
|
that should probably be converted to GhcModT or return IO (Either
|
||||||
|
String SomeThing) instead. It should be pretty easy to write a
|
||||||
|
function to lift IO (Either e a) into a GhcModT a (where e could be
|
||||||
|
String, ´GhcModError` or something like that).
|
||||||
|
|
||||||
|
|
||||||
|
* #if
|
||||||
|
|
||||||
|
"#if __GLASGOW_HASKELL__" should be used in "Gap.hs" and "Monad.hs"
|
||||||
|
only. If it is used in another file, it should be moved into
|
||||||
|
"Gap.hs".
|
Loading…
Reference in New Issue
Block a user