-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Simple evaluation trace
--
@package traced
@version 3000
module Debug.Traced.Internal
-- | Traced values of some type.
data Traced a
-- | Create a traced value.
traced :: Traceable a => a -> Traced a
-- | Create a named traced value.
named :: Traceable a => String -> a -> Traced a
-- | Add a named to a traced value.
nameTraced :: Traceable a => String -> Traced a -> Traced a
-- | Create a named thing with no value. Cannot be used where a real value
-- is needed.
unknown :: Traceable a => String -> Traced a
-- | Extract the real value from a traced value.
unTraced :: Traced a -> a
-- | Extract the expression tree from a traced value.
tracedD :: Traceable a => Traced a -> TracedD
data TraceLevel
TLValue :: TraceLevel
TLExp :: TraceLevel
TLFullExp :: TraceLevel
class (Typeable a, Show a) => Traceable a
trPPrint :: Traceable a => TraceLevel -> Int -> a -> Doc
-- | Expression tree for a traced value.
data TracedD
-- | unknown value
NoValue :: TracedD
-- | value with a name
Name :: Bool -> Name -> TracedD -> TracedD
-- | constant
Con :: a -> TracedD
-- | application
Apply :: a -> Name -> Fixity -> [TracedD] -> TracedD
-- | (recovered) let expression
Let :: [(Name, TracedD)] -> TracedD -> TracedD
-- | Convert an expression tree to a traced value, if the types are
-- correct.
unTracedD :: Traceable a => TracedD -> Maybe (Traced a)
binOp :: (Traceable a, Traceable b, Traceable c) => (a -> b -> c) -> (String, Fixity) -> Traced a -> Traced b -> Traced c
unOp :: (Traceable a, Traceable b) => (a -> b) -> String -> Traced a -> Traced b
-- | Create a traced value with an Apply expression tree.
apply :: Traceable a => a -> Name -> Fixity -> [TracedD] -> Traced a
liftT :: Liftable a b => Name -> Fixity -> a -> b
liftFun :: Liftable a b => Name -> a -> b
class Liftable a b | a -> b, b -> a
liftT' :: Liftable a b => Name -> Fixity -> [TracedD] -> a -> b
baseLiftT :: Traceable a => Name -> Fixity -> [TracedD] -> a -> Traced a
-- | Fixity for identifier.
data Fixity
InfixL :: Int -> Fixity
InfixR :: Int -> Fixity
Infix :: Int -> Fixity
Nonfix :: Fixity
-- | Show the expression tree of a traced value.
showAsExp :: Traceable a => Traced a -> String
-- | Show the expression tree of a traced value, also show the value of
-- each variable.
showAsExpFull :: Traceable a => Traced a -> String
pPrintTraced :: Traceable a => TraceLevel -> Int -> Traced a -> Doc
reShare :: Traceable a => Traced a -> Traced a
-- | Simplify an expression tree.
simplify :: Traced a -> Traced a
instance [overlap ok] Typeable TraceLevel
instance [overlap ok] Typeable TracedD
instance [overlap ok] Typeable Traced
instance [overlap ok] Eq TraceLevel
instance [overlap ok] Ord TraceLevel
instance [overlap ok] Show TraceLevel
instance [overlap ok] Data TraceLevel
instance [overlap ok] Eq Fixity
instance [overlap ok] Ord Fixity
instance [overlap ok] Show Fixity
instance [overlap ok] Data a => Data (Traced a)
instance [overlap ok] (Traceable a, RealFloat a) => RealFloat (Traced a)
instance [overlap ok] (Traceable a, Floating a) => Floating (Traced a)
instance [overlap ok] (Traceable a, RealFrac a) => RealFrac (Traced a)
instance [overlap ok] (Traceable a, Real a) => Real (Traced a)
instance [overlap ok] (Traceable a, Enum a) => Enum (Traced a)
instance [overlap ok] (Traceable a, Integral a) => Integral (Traced a)
instance [overlap ok] (Traceable a, Fractional a) => Fractional (Traced a)
instance [overlap ok] (Traceable a, Num a) => Num (Traced a)
instance [overlap ok] Show a => Show (Traced a)
instance [overlap ok] Ord a => Ord (Traced a)
instance [overlap ok] Eq a => Eq (Traced a)
instance [overlap ok] Liftable () (Traced ())
instance [overlap ok] Liftable Ordering (Traced Ordering)
instance [overlap ok] Liftable Bool (Traced Bool)
instance [overlap ok] Liftable Float (Traced Float)
instance [overlap ok] Liftable Double (Traced Double)
instance [overlap ok] Liftable Int (Traced Int)
instance [overlap ok] Liftable Integer (Traced Integer)
instance [overlap ok] (Traceable a, Liftable b tb) => Liftable (a -> b) (Traced a -> tb)
instance [overlap ok] Ord TracedD
instance [overlap ok] Eq TracedD
instance [overlap ok] Show TracedD
instance [overlap ok] Data TracedD
instance [overlap ok] (Typeable a, Show a) => Traceable a
instance [overlap ok] (Read a, Traceable a) => Read (Traced a)
-- | |The Traced module provides a simple way of tracing expression
-- evaluation. A value of type Traced a has both a value of type
-- a and an expression tree that describes how the value was
-- computed.
--
-- There are instances for the Traced type for all numeric classes
-- to make it simple to trace numeric expressions.
--
-- The expression tree associated with a traced value is exactly that: a
-- tree. But evaluation of expressions in Haskell typically has sharing
-- to avoid recomputation. This sharing can be recovered by the (impure)
-- reShare function.
--
-- $examples
module Debug.Traced
-- | Traced values of some type.
data Traced a
-- | Create a traced value.
traced :: Traceable a => a -> Traced a
-- | Create a named traced value.
named :: Traceable a => String -> a -> Traced a
-- | Add a named to a traced value.
nameTraced :: Traceable a => String -> Traced a -> Traced a
-- | Create a named thing with no value. Cannot be used where a real value
-- is needed.
unknown :: Traceable a => String -> Traced a
-- | Extract the real value from a traced value.
unTraced :: Traced a -> a
-- | Extract the expression tree from a traced value.
tracedD :: Traceable a => Traced a -> TracedD
-- | Expression tree for a traced value.
data TracedD
-- | Convert an expression tree to a traced value, if the types are
-- correct.
unTracedD :: Traceable a => TracedD -> Maybe (Traced a)
class (Typeable a, Show a) => Traceable a
liftT :: Liftable a b => Name -> Fixity -> a -> b
liftFun :: Liftable a b => Name -> a -> b
class Liftable a b | a -> b, b -> a
-- | Show the expression tree of a traced value.
showAsExp :: Traceable a => Traced a -> String
-- | Show the expression tree of a traced value, also show the value of
-- each variable.
showAsExpFull :: Traceable a => Traced a -> String
reShare :: Traceable a => Traced a -> Traced a
-- | Simplify an expression tree.
simplify :: Traced a -> Traced a
-- | Traced version of if.
ifT :: Traceable a => Traced Bool -> Traced a -> Traced a -> Traced a
-- | Comparisons generating traced booleans.
(%==) :: (Traceable a, Eq a) => Traced a -> Traced a -> Traced Bool
-- | Comparisons generating traced booleans.
(%/=) :: (Traceable a, Eq a) => Traced a -> Traced a -> Traced Bool
(%<) :: (Traceable a, Ord a) => Traced a -> Traced a -> Traced Bool
(%<=) :: (Traceable a, Ord a) => Traced a -> Traced a -> Traced Bool
(%>) :: (Traceable a, Ord a) => Traced a -> Traced a -> Traced Bool
(%>=) :: (Traceable a, Ord a) => Traced a -> Traced a -> Traced Bool
(%&&) :: Traced Bool -> Traced Bool -> Traced Bool
(%||) :: Traced Bool -> Traced Bool -> Traced Bool
tnot :: Traced Bool -> Traced Bool
-- | A wrapper for Traced to show it with full details.
data TracedExp a
tracedExp :: Traceable a => a -> TracedExp a
namedExp :: Traceable a => String -> a -> TracedExp a
instance Typeable TracedExp
instance Eq a => Eq (TracedExp a)
instance Ord a => Ord (TracedExp a)
instance (Num a, Show a, Typeable a) => Num (TracedExp a)
instance (Fractional a, Show a, Typeable a) => Fractional (TracedExp a)
instance (Integral a, Show a, Typeable a) => Integral (TracedExp a)
instance (Enum a, Show a, Typeable a) => Enum (TracedExp a)
instance (Real a, Show a, Typeable a) => Real (TracedExp a)
instance (RealFrac a, Show a, Typeable a) => RealFrac (TracedExp a)
instance (Floating a, Show a, Typeable a) => Floating (TracedExp a)
instance (RealFloat a, Show a, Typeable a) => RealFloat (TracedExp a)
instance (Traceable a, Show a) => Show (TracedExp a)