module Hint.All(
Hint(..), DeclHint, ModuHint,
builtinHints, hintRules
) where
import Settings
import Data.Monoid
import Hint.Type
import Hint.Match
import Hint.List
import Hint.ListRec
import Hint.Monad
import Hint.Lambda
import Hint.Bracket
import Hint.Naming
import Hint.Structure
import Hint.Import
import Hint.Pragma
import Hint.Extensions
import Hint.Duplicate
import Hint.Comment
builtinHints :: [(String,Hint)]
builtinHints =
["List" ! listHint
,"ListRec" ! listRecHint
,"Monad" ! monadHint
,"Lambda" ! lambdaHint
,"Bracket" ! bracketHint
,"Naming" ! namingHint
,"Structure" ! structureHint
,"Import" + importHint
,"Pragma" + pragmaHint
,"Extensions" + extensionsHint
,"Duplicate" * duplicateHint
,"Comment" - commentHint
]
where
x!y = (x,mempty{hintDecl=y})
x+y = (x,mempty{hintModule=y})
x*y = (x,mempty{hintModules=y})
x-y = (x,mempty{hintComment=y})
hintRules :: [HintRule] -> Hint
hintRules xs = mempty{hintDecl=readMatch xs}