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

Contents

Description

Simple reflection of haskell expressions containing variables.

Synopsis

Construction

data Expr Source #

A reflected expression

Instances

Bounded Expr Source # 
Enum Expr Source # 

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 # 

Methods

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

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

Floating Expr Source # 

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 # 

Methods

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

recip :: Expr -> Expr #

fromRational :: Rational -> Expr #

Integral Expr Source # 

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 # 

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 # 

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 # 

Methods

toRational :: Expr -> Rational #

Show Expr Source # 

Methods

showsPrec :: Int -> Expr -> ShowS #

show :: Expr -> String #

showList :: [Expr] -> ShowS #

Semigroup Expr Source # 

Methods

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

sconcat :: NonEmpty Expr -> Expr #

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

Monoid Expr Source # 

Methods

mempty :: Expr #

mappend :: Expr -> Expr -> Expr #

mconcat :: [Expr] -> Expr #

FromExpr Expr Source # 

Methods

fromExpr :: Expr -> Expr Source #

class FromExpr a where Source #

Conversion from Expr to other types

Minimal complete definition

fromExpr

Methods

fromExpr :: Expr -> a Source #

Instances

FromExpr Expr Source # 

Methods

fromExpr :: Expr -> Expr Source #

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

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 

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.