1import Data.Generics.Uniplate.Internal.Data 2import Data.Data 3 4instance Data a => Uniplate a where 5 uniplate = uniplateData $ fromOracle answer 6 where answer = hitTest (undefined :: a) (undefined :: a) 7 8 descend = descendData $ fromOracle answer 9 where answer = hitTest (undefined :: a) (undefined :: a) 10 11 descendM = descendDataM $ fromOracle answer 12 where answer = hitTest (undefined :: a) (undefined :: a) 13 14instance (Data a, Data b, Uniplate b) => Biplate a b where 15 biplate = biplateData $ fromOracle answer 16 where answer = hitTest (undefined :: a) (undefined :: b) 17 18 descendBi = descendBiData $ fromOracle answer 19 where answer = hitTest (undefined :: a) (undefined :: b) 20 21 descendBiM = descendBiDataM $ fromOracle answer 22 where answer = hitTest (undefined :: a) (undefined :: b) 23