E.g.
- Pointfree conversions
- Eta-reductions (
\x -> f x to f)
- Const (
\_ -> x to const x)
- Void (
x >> return () to void x)
- ...
- Common library functions (
maybe x id m to fromMaybe x m, fst . runState to evalState, snd . runState to execState, foldr1 (?) to anyOf, ...)
- Redundant
dos (do { x } to x)
- Merging adjacent
lets
- Warn (or at least 'info') about
Debug.Trace imports
- ...
These suggestions could be similar to what hlint suggests.
E.g.
\x -> f xtof)\_ -> xtoconst x)x >> return ()tovoid x)maybe x id mtofromMaybe x m,fst . runStatetoevalState,snd . runStatetoexecState,foldr1 (?)toanyOf, ...)dos (do { x }tox)letsDebug.TraceimportsThese suggestions could be similar to what hlint suggests.