From 9da490d9ac1518cce638ab30f758a717b4b7a222 Mon Sep 17 00:00:00 2001 From: ralf Date: Thu, 5 Jun 2003 13:42:51 +0000 Subject: [PATCH] [project @ 2003-06-05 13:42:51 by ralf] Add listify; other minor revisions. --- Data/Generics.hs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Data/Generics.hs b/Data/Generics.hs index 0f79a34..4132aa2 100644 --- a/Data/Generics.hs +++ b/Data/Generics.hs @@ -51,6 +51,7 @@ module Data.Generics ( everywhereM, somewhere, everything, + listify, something, synthesize, @@ -509,7 +510,13 @@ everything :: (r -> r -> r) -> GenericQ r -> GenericQ r -- 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 -- 1.7.10.4