1{-# LANGUAGE CPP #-} 2 3{-| 4Module: Data.Functor.Classes.Generic 5Copyright: (C) 2015-2016 Edward Kmett, Ryan Scott 6License: BSD-style (see the file LICENSE) 7Maintainer: Ryan Scott 8Stability: Provisional 9Portability: GHC 10 11Functions to generically derive 'C.Eq1', 'C.Ord1', 'C.Read1', and 'C.Show1' 12instances from "Data.Functor.Classes". 13-} 14module Data.Functor.Classes.Generic 15 ( -- * Options 16 Options(..) 17 , defaultOptions 18 , latestGHCOptions 19#if defined(TRANSFORMERS_FOUR) 20 -- * 'Eq1' 21 , eq1Default 22 , eq1Options 23 -- * 'Ord1' 24 , compare1Default 25 , compare1Options 26 -- * 'Read1' 27 , readsPrec1Default 28 , readsPrec1Options 29 -- * 'Show1' 30 , showsPrec1Default 31 , showsPrec1Options 32#else 33 -- * 'Eq1' 34 , liftEqDefault 35 , liftEqOptions 36 -- * 'Ord1' 37 , liftCompareDefault 38 , liftCompareOptions 39 -- * 'Read1' 40 , liftReadsPrecDefault 41 , liftReadsPrecOptions 42 -- * 'Show1' 43 , liftShowsPrecDefault 44 , liftShowsPrecOptions 45#endif 46 -- * Example 47 -- $example 48 ) where 49 50import qualified Data.Functor.Classes as C () 51import Data.Functor.Classes.Generic.Internal 52 53#undef MIN_VERSION_transformers 54{- $example 55Note that this module exports different functions depending on which version of 56@transformers@ this library is built against. Here is an example of how to 57use this module correctly: 58 59@ 60{-# LANGUAGE DeriveGeneric #-} 61 62import Data.Functor.Classes 63import Data.Functor.Classes.Generic 64import GHC.Generics 65 66data Pair a = Pair a a deriving Generic1 67 68instance 'C.Eq1' Pair where 69\#if MIN_VERSION_transformers(0,4,0) && !(MIN_VERSION_transformers(0,5,0)) 70 'C.eq1' = 'eq1Default' 71\#else 72 'C.liftEq' = 'liftEqDefault' 73\#endif 74 75instance 'C.Ord1' Pair where 76\#if MIN_VERSION_transformers(0,4,0) && !(MIN_VERSION_transformers(0,5,0)) 77 'C.compare1' = 'compare1Default' 78\#else 79 'C.liftCompare' = 'liftCompareDefault' 80\#endif 81 82instance 'C.Read1' Pair where 83\#if MIN_VERSION_transformers(0,4,0) && !(MIN_VERSION_transformers(0,5,0)) 84 'C.readsPrec1' = 'readsPrec1Default' 85\#else 86 'C.liftReadsPrec' = 'liftReadsPrecDefault' 87\#endif 88 89instance 'C.Show1' Pair where 90\#if MIN_VERSION_transformers(0,4,0) && !(MIN_VERSION_transformers(0,5,0)) 91 'C.showsPrec1' = 'showsPrec1Default' 92\#else 93 'C.liftShowsPrec' = 'liftShowsPrecDefault' 94\#endif 95@ 96-} 97