Add listify; other minor revisions.
everywhereM,
somewhere,
everything,
+ listify,
something,
synthesize,
-- use ordinary foldl to reduce list of intermediate results
--
everything k f x
- = foldl k (f x) (gmapQ (everything k f) x)
+ = foldl k (f x) (gmapQ (everything k f) x)
+
+
+-- | Get a list of all entities that meet a predicate
+listify :: Typeable r => (r -> Bool) -> GenericQ [r]
+listify p
+ = everything (++) ([] `mkQ` (\x -> if p x then [x] else []))
-- | Look up a subterm by means of a maybe-typed filter