simple-reflect-0.3.3: Simple reflection of expressions containing variables
Copyright(c) 2008-2014 Twan van Laarhoven
LicenseBSD-style
Maintainertwanvl@gmail.com
Stabilityexperimental
Portabilityportable
Safe HaskellSafe
LanguageHaskell98

Debug.SimpleReflect.Expr

Description

Simple reflection of haskell expressions containing variables.

Synopsis

Construction

data Expr Source #

A reflected expression

Instances

Instances details
Bounded Expr Source # 
Instance details

Defined in Debug.SimpleReflect.Expr

Enum Expr Source # 
Instance details

Defined in Debug.SimpleReflect.Expr

Methods

succ :: Expr -> Expr

pred :: Expr -> Expr

toEnum :: Int -> Expr

fromEnum :: Expr -> Int

enumFrom :: Expr -> [Expr]

enumFromThen :: Expr -> Expr -> [Expr]

enumFromTo :: Expr -> Expr -> [Expr]

enumFromThenTo :: Expr -> Expr -> Expr -> [Expr]

Eq Expr Source # 
Instance details

Defined in Debug.SimpleReflect.Expr

Methods

(==) :: Expr -> Expr -> Bool

(/=) :: Expr -> Expr -> Bool

Floating Expr Source # 
Instance details

Defined in Debug.SimpleReflect.Expr

Methods

pi :: Expr

exp :: Expr -> Expr

log :: Expr -> Expr

sqrt :: Expr -> Expr

(**) :: Expr -> Expr -> Expr

logBase :: Expr -> Expr -> Expr

sin :: Expr -> Expr

cos :: Expr -> Expr

tan :: Expr -> Expr

asin :: Expr -> Expr

acos :: Expr -> Expr

atan :: Expr -> Expr

sinh :: Expr -> Expr

cosh :: Expr -> Expr

tanh :: Expr -> Expr

asinh :: Expr -> Expr

acosh :: Expr -> Expr

atanh :: Expr -> Expr

log1p :: Expr -> Expr

expm1 :: Expr -> Expr

log1pexp :: Expr -> Expr

log1mexp :: Expr -> Expr

Fractional Expr Source # 
Instance details

Defined in Debug.SimpleReflect.Expr

Methods

(/) :: Expr -> Expr -> Expr

recip :: Expr -> Expr

fromRational :: Rational -> Expr

Integral Expr Source # 
Instance details

Defined in Debug.SimpleReflect.Expr

Methods

quot :: Expr -> Expr -> Expr

rem :: Expr -> Expr -> Expr

div :: Expr -> Expr -> Expr

mod :: Expr -> Expr -> Expr

quotRem :: Expr -> Expr -> (Expr, Expr)

divMod :: Expr -> Expr -> (Expr, Expr)

toInteger :: Expr -> Integer

Num Expr Source # 
Instance details

Defined in Debug.SimpleReflect.Expr

Methods

(+) :: Expr -> Expr -> Expr

(-) :: Expr -> Expr -> Expr

(*) :: Expr -> Expr -> Expr

negate :: Expr -> Expr

abs :: Expr -> Expr

signum :: Expr -> Expr

fromInteger :: Integer -> Expr

Ord Expr Source # 
Instance details

Defined in Debug.SimpleReflect.Expr

Methods

compare :: Expr -> Expr -> Ordering

(<) :: Expr -> Expr -> Bool

(<=) :: Expr -> Expr -> Bool

(>) :: Expr -> Expr -> Bool

(>=) :: Expr -> Expr -> Bool

max :: Expr -> Expr -> Expr

min :: Expr -> Expr -> Expr

Real Expr Source # 
Instance details

Defined in Debug.SimpleReflect.Expr

Methods

toRational :: Expr -> Rational

Show Expr Source # 
Instance details

Defined in Debug.SimpleReflect.Expr

Methods

showsPrec :: Int -> Expr -> ShowS

show :: Expr -> String

showList :: [Expr] -> ShowS

Semigroup Expr Source # 
Instance details

Defined in Debug.SimpleReflect.Expr

Methods

(<>) :: Expr -> Expr -> Expr

sconcat :: NonEmpty Expr -> Expr

stimes :: Integral b => b -> Expr -> Expr

Monoid Expr Source # 
Instance details

Defined in Debug.SimpleReflect.Expr

Methods

mempty :: Expr

mappend :: Expr -> Expr -> Expr

mconcat :: [Expr] -> Expr

FromExpr Expr Source # 
Instance details

Defined in Debug.SimpleReflect.Expr

Methods

fromExpr :: Expr -> Expr Source #

class FromExpr a where Source #

Conversion from Expr to other types

Methods

fromExpr :: Expr -> a Source #

Instances

Instances details
FromExpr Expr Source # 
Instance details

Defined in Debug.SimpleReflect.Expr

Methods

fromExpr :: Expr -> Expr Source #

(Show a, FromExpr b) => FromExpr (a -> b) Source # 
Instance details

Defined in Debug.SimpleReflect.Expr

Methods

fromExpr :: Expr -> a -> b Source #

var :: String -> Expr Source #

A variable with the given name

fun :: FromExpr a => String -> a Source #

A generic, overloaded, function variable

data Associativity Source #

This data type specifies the associativity of operators: left, right or none.

Constructors

InfixL 
Infix 
InfixR 

Instances

Instances details
Eq Associativity Source # 
Instance details

Defined in Debug.SimpleReflect.Expr

op :: Associativity -> Int -> String -> Expr -> Expr -> Expr Source #

An infix operator with the given associativity, precedence and name

Evaluating

expr :: Expr -> Expr Source #

Force something to be an expression.

reduce :: Expr -> Expr Source #

Reduce (evaluate) an expression once.

For example reduce (1 + 2 + 3 + 4) == 3 + 3 + 4

reduction :: Expr -> [Expr] Source #

Show all reduction steps when evaluating an expression.