{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE OverloadedStrings #-} module Sum where import Data.String.Conversions (cs) import GHC.Base import GHC.Generics import Protolude hiding (Sum, empty) import Text.PrettyPrint.GenericPretty data Sum = Cat | Dog | Rat | Elephant deriving (Eq, Read, Show, Generic, Pretty) sample :: Sum sample = Elephant showAndRead :: Sum -> Either GHC.Base.String Sum showAndRead = readEither . cs . displayPretty