GenericR,
Generic,
Generic'(..),
+ GenericT'(..),
+ GenericQ'(..),
+ GenericM'(..),
-- * Inredients of generic functions
orElse,
data Generic' c = Generic' { unGeneric' :: Generic c }
+-- | Other first-class polymorphic wrappers
+newtype GenericT' = GenericT' { unGenericT' :: Data a => a -> a }
+newtype GenericQ' r = GenericQ' { unGenericQ' :: GenericQ r }
+newtype GenericM' m = GenericM' { unGenericM' :: Data a => a -> m a }
+
-- | Left-biased choice on maybies
orElse :: Maybe a -> Maybe a -> Maybe a