{-# OPTIONS -fglasgow-exts #-} -- a really nasty type: module API where import Data.Generics data Interface = Interface { field :: Typeable r => (r -> Bool) -> GenericQ [r] } rsrc :: Interface rsrc = Interface { field = listify }