Copyright | (c) Sirui Lu 2021-2023 |
---|---|
License | BSD-3-Clause (see the LICENSE file) |
Maintainer | siruilu@cs.washington.edu |
Stability | Experimental |
Portability | GHC only |
Safe Haskell | None |
Language | Haskell2010 |
Grisette.Internal.SymPrim.Prim.Internal.PartialEval
Description
Synopsis
- type PartialFun a b = a -> Maybe b
- type PartialRuleUnary a b = PartialFun (Term a) (Term b)
- type TotalRuleUnary a b = Term a -> Term b
- type PartialRuleBinary a b c = Term a -> PartialFun (Term b) (Term c)
- type TotalRuleBinary a b c = Term a -> Term b -> Term c
- totalize :: PartialFun a b -> (a -> b) -> a -> b
- totalize2 :: (a -> PartialFun b c) -> (a -> b -> c) -> a -> b -> c
- class UnaryPartialStrategy tag a b | tag a -> b where
- extractor :: tag -> Term a -> Maybe a
- constantHandler :: tag -> a -> Maybe (Term b)
- nonConstantHandler :: tag -> Term a -> Maybe (Term b)
- unaryPartial :: UnaryPartialStrategy tag a b => tag -> PartialRuleUnary a b
- class BinaryCommPartialStrategy tag a c | tag a -> c where
- singleConstantHandler :: tag -> a -> Term a -> Maybe (Term c)
- class BinaryPartialStrategy tag a b c | tag a b -> c where
- extractora :: tag -> Term a -> Maybe a
- extractorb :: tag -> Term b -> Maybe b
- allConstantHandler :: tag -> a -> b -> Maybe (Term c)
- leftConstantHandler :: tag -> a -> Term b -> Maybe (Term c)
- rightConstantHandler :: tag -> Term a -> b -> Maybe (Term c)
- nonBinaryConstantHandler :: tag -> Term a -> Term b -> Maybe (Term c)
- binaryPartial :: BinaryPartialStrategy tag a b c => tag -> PartialRuleBinary a b c
Documentation
type PartialFun a b = a -> Maybe b Source #
A partial function from a to b.
type PartialRuleUnary a b = PartialFun (Term a) (Term b) Source #
A partial rule for unary operations.
type TotalRuleUnary a b = Term a -> Term b Source #
A total rule for unary operations.
type PartialRuleBinary a b c = Term a -> PartialFun (Term b) (Term c) Source #
A partial rule for binary operations.
totalize :: PartialFun a b -> (a -> b) -> a -> b Source #
Totalize a partial function with a fallback function.
totalize2 :: (a -> PartialFun b c) -> (a -> b -> c) -> a -> b -> c Source #
Totalize a binary partial function with a fallback function.
class UnaryPartialStrategy tag a b | tag a -> b where Source #
A strategy for partially evaluating unary operations.
unaryPartial :: UnaryPartialStrategy tag a b => tag -> PartialRuleUnary a b Source #
Partially evaluate a unary operation.
class BinaryCommPartialStrategy tag a c | tag a -> c where Source #
A strategy for partially evaluating commutative binary operations.
class BinaryPartialStrategy tag a b c | tag a b -> c where Source #
A strategy for partially evaluating operations.
Minimal complete definition
extractora, extractorb, allConstantHandler, nonBinaryConstantHandler
Methods
extractora :: tag -> Term a -> Maybe a Source #
extractorb :: tag -> Term b -> Maybe b Source #
allConstantHandler :: tag -> a -> b -> Maybe (Term c) Source #
leftConstantHandler :: tag -> a -> Term b -> Maybe (Term c) Source #
default leftConstantHandler :: (a ~ b, BinaryCommPartialStrategy tag a c) => tag -> a -> Term b -> Maybe (Term c) Source #
rightConstantHandler :: tag -> Term a -> b -> Maybe (Term c) Source #
default rightConstantHandler :: (a ~ b, BinaryCommPartialStrategy tag a c) => tag -> Term a -> b -> Maybe (Term c) Source #
nonBinaryConstantHandler :: tag -> Term a -> Term b -> Maybe (Term c) Source #
binaryPartial :: BinaryPartialStrategy tag a b c => tag -> PartialRuleBinary a b c Source #
Partially evaluate a binary operation.