module Displayable where 
import Types 
import Data.Functor.Identity
import qualified Data.Text as T
instance Displayable Bool where 
  display b = Display DisplayText (show b)
instance Displayable Int where 
  display i = Display DisplayText (show i)
instance Displayable Float where 
  display f = Display DisplayText (show f)
instance Displayable Double where
  display d = Display DisplayText (show d)
instance Displayable Char where 
  display c = Display DisplayText (show c)
instance Displayable T.Text where 
  display t = Display DisplayText (T.unpack t)
instance (Show a) => Displayable [a] where 
  display lst = Display DisplayText (show lst)
instance (Show a) => Displayable (Maybe a) where 
  display m = Display DisplayText (show m)
instance (Show a) => Displayable (Identity a) where 
  display i = Display DisplayText (show i)
instance (Show a, Show e) => Displayable (Either e a) where
  display e = Display DisplayText (show e)
instance Displayable () where 
  display () = Display DisplayText "()"
instance (Show a, Show b) => Displayable (a, b) where 
  display tup = Display DisplayText (show tup)
instance (Show a, Show b, Show c) => Displayable (a, b, c) where 
  display tup = Display DisplayText (show tup)
instance (Show a, Show b, Show c, Show d) => Displayable (a, b, c, d) where 
  display tup = Display DisplayText (show tup)
instance (Show a, Show b, Show c, Show d, Show e) => Displayable (a, b, c, d, e) where 
  display tup = Display DisplayText (show tup)
instance (Show a, Show b, Show c, Show d, Show e, Show f) => Displayable (a, b, c, d, e, f) where 
  display tup = Display DisplayText (show tup)
instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g) => Displayable (a, b, c, d, e, f, g) where 
  display tup = Display DisplayText (show tup)
instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h) => Displayable (a, b, c, d, e, f, g, h) where 
  display tup = Display DisplayText (show tup)
instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i) => Displayable (a, b, c, d, e, f, g, h, i) where 
  display tup = Display DisplayText (show tup)
instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j) => Displayable (a, b, c, d, e, f, g, h, i, j) where 
  display tup = Display DisplayText (show tup)
instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k) => Displayable (a, b, c, d, e, f, g, h, i, j, k) where 
  display tup = Display DisplayText (show tup)
instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l) => Displayable (a, b, c, d, e, f, g, h, i, j, k, l) where 
  display tup = Display DisplayText (show tup)
instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l, Show m) => Displayable (a, b, c, d, e, f, g, h, i, j, k, l, m) where 
  display tup = Display DisplayText (show tup)
instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l, Show m, Show n) => Displayable (a, b, c, d, e, f, g, h, i, j, k, l, m, n) where 
  display tup = Display DisplayText (show tup)
instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l, Show m, Show n, Show o) => Displayable (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) where 
  display tup = Display DisplayText (show tup)