hs-inspector-0.5.0.0: src/Language/Haskell/Inspector/Combiner.hs
module Language.Haskell.Inspector.Combiner (
detect,
negative,
transitive) where
import Language.Haskell.Inspector
import Language.Haskell.Explorer
import Data.Maybe (maybeToList)
detect :: Inspection -> Code -> [Binding]
detect inspection code = filter (`inspection` code) $ parseBindings code
negative :: Inspection -> Inspection
negative f code = not . f code
transitive :: Inspection -> Inspection
transitive inspection binding code = inspection binding code || inUsage
where inUsage = any (flip (transitive inspection) code) $ do
expr <- expressionsOf binding code
maybeToList . expressionToBinding $ expr