hobbits-1.1: Data/Binding/Hobbits/InternalUtilities.hs
{-# LANGUAGE Rank2Types #-}
module Data.Binding.Hobbits.InternalUtilities where
import qualified Data.Generics as SYB
everywhereButM :: Monad m =>
SYB.GenericQ Bool -> SYB.GenericM m -> SYB.GenericM m
everywhereButM q f x
| q x = return x
| otherwise = (SYB.gmapM (everywhereButM q f) x) >>= f