-------------------------------------------------------------------------------- -- | -- Module : Text.Show.Value -- Copyright : (c) Iavor S. Diatchki 2009 -- License : BSD3 -- -- Maintainer : iavor.diatchki@gmail.com -- Stability : provisional -- Portability : Haskell 98 -- -- Generic representation of Showable values. -------------------------------------------------------------------------------- module Text.Show.Value ( Name, Value(..) ) where -- | A name. type Name = String -- | Generic Haskell values. -- 'NaN' and 'Infinity' are represented as constructors. -- The 'String' in the literals is the text for the literals \"as is\". -- -- A chain of infix constructors means that they appeared in the input string -- without parentheses, i.e -- -- @1 :+: 2 :*: 3@ is represented with @InfixCons 1 [(":+:",2),(":*:",3)]@, whereas -- -- @1 :+: (2 :*: 3)@ is represented with @InfixCons 1 [(":+:",InfixCons 2 [(":*:",3)])]@. data Value = Con Name [Value] -- ^ Data constructor | InfixCons Value [(Name,Value)] -- ^ Infix data constructor chain | Rec Name [ (Name,Value) ] -- ^ Record value | Tuple [Value] -- ^ Tuple | List [Value] -- ^ List | Neg Value -- ^ Negated value | Ratio Value Value -- ^ Rational | Integer String -- ^ Non-negative integer | Float String -- ^ Non-negative floating num. | Char String -- ^ Character | String String -- ^ String deriving (Eq,Show)