Eval -is:module

Eval is a Monad that makes it easier to define parallel strategies. It is a strict identity monad: that is, in
m >>= f
m is evaluated before the result is passed to f.
instance Monad Eval where
return  = Done
m >>= k = case m of
Done x -> k x
If you wanted to construct a Strategy for a pair that sparked the first component in parallel and then evaluated the second component, you could write
myStrat :: Strategy (a,b)
myStrat (a,b) = do { a' <- rpar a; b' <- rseq b; return (a',b') }
Alternatively, you could write this more compactly using the Applicative style as
myStrat (a,b) = (,) <$> rpar a <*> rseq b
Expression evaluator.
Monad for performing symbolic evaluation.
The monad of partial evaluation. The inner monad is IO, as primitive evaluation can attempt to evaluate IO actions.
A response to an eval comment
Cf. board-games package.
Represents a type family application.
Evaluate an awk expression.
Fails the test if the value throws an exception when evaluated to weak head normal form (WHNF).
eval expr will evaluate show expr. It will succeed only if expr has type t and there is a Show instance for t.
Evaluates a script (like eval in java script)
>>> testJSaddle $ eval "1+1"
2
Evaluate an expression
Run code on server
For elements of the multiplicative group <math>, a Dirichlet character evaluates to a root of unity.
Evaluate a symbolic tree, obtaining a symbolic value. Note how we structure this evaluation so we impose extra constraints on what values square-root, divide etc. can take. This is the power of the symbolic approach: We can put arbitrary symbolic constraints as we evaluate the tree.