{-# LANGUAGE TemplateHaskell #-}
module Categorical.Dual.Prelude where
import Categorical.Dual
importDuals emptyDuals
labelSelfDual ''Bool
labelDual '(&&) '(||)
labelSelfDual 'not
labelDual ''Either ''(,)
labelSelfDual ''Ordering
labelSelfDual ''Char
labelSelfDual ''String
labelDual 'fst 'Left
labelDual 'snd 'Right
labelSelfDual ''Eq
labelSelfDual '(==)
labelSelfDual '(/=)
labelSelfDual ''Ord
labelDual '(<) '(>=)
labelDual '(<=) '(>)
labelDual 'max 'min
labelSelfDual ''Enum
labelSelfDual ''Bounded
labelDual 'minBound 'maxBound
labelSelfDual ''Int
labelSelfDual ''Integer
labelSelfDual ''Float
labelSelfDual ''Double
labelSelfDual ''Rational
labelSelfDual ''Word
labelSelfDual ''Num
labelSelfDual ''Real
labelSelfDual ''Integral
labelSelfDual ''Fractional
labelSelfDual ''Floating
labelSelfDual ''RealFrac
labelSelfDual ''Functor
labelSelfDual 'fmap
labelSelfDual '(<$)
labelSelfDual '(<$>)
labelSelfDual 'id
labelSelfDual 'const
labelSelfDual 'map
labelDual ''Show ''Read
labelDual 'show 'read
labelSelfDual ''IO
labelDual 'putChar 'getChar
labelDual 'putStrLn 'getLine
labelDual 'readFile 'writeFile
exportDuals "preludeDuals"