- data Sym ctx a where
- witnessSatSym :: forall ctx dom a. (Sym ctx) :<: dom => Proxy ctx -> ASTF dom a -> Maybe (Witness' ctx a)
- sym0 :: (Sat ctx a, (Sym ctx) :<: dom) => Proxy ctx -> String -> a -> ASTF dom a
- sym1 :: (Typeable a, Sat ctx b, (Sym ctx) :<: dom) => Proxy ctx -> String -> (a -> b) -> ASTF dom a -> ASTF dom b
- sym2 :: (Typeable a, Typeable b, Sat ctx c, (Sym ctx) :<: dom) => Proxy ctx -> String -> (a -> b -> c) -> ASTF dom a -> ASTF dom b -> ASTF dom c
- sym3 :: (Typeable a, Typeable b, Typeable c, Sat ctx d, (Sym ctx) :<: dom) => Proxy ctx -> String -> (a -> b -> c -> d) -> ASTF dom a -> ASTF dom b -> ASTF dom c -> ASTF dom d
- sym4 :: (Typeable a, Typeable b, Typeable c, Typeable d, Sat ctx e, (Sym ctx) :<: dom) => Proxy ctx -> String -> (a -> b -> c -> d -> e) -> ASTF dom a -> ASTF dom b -> ASTF dom c -> ASTF dom d -> ASTF dom e
- prjSym :: (Sym ctx) :<: sup => Proxy ctx -> sup a -> Maybe (Sym ctx a)
- class IsSymbol expr where
- exprEqSym :: IsSymbol expr => expr a -> expr b -> Bool
- exprHashSym :: IsSymbol expr => expr a -> Hash
- renderPartSym :: IsSymbol expr => [String] -> expr a -> String
- evaluateSym :: IsSymbol expr => expr a -> a
Documentation
WitnessSat (Sym ctx) | |
WitnessCons (Sym ctx) | |
ExprEq (Sym ctx) | |
ToTree (Sym ctx) | |
Render (Sym ctx) | |
Eval (Sym ctx) | |
((Sym ctx') :<: dom, PartialEval dom ctx dom) => PartialEval (Sym ctx') ctx dom |
witnessSatSym :: forall ctx dom a. (Sym ctx) :<: dom => Proxy ctx -> ASTF dom a -> Maybe (Witness' ctx a)Source
sym0 :: (Sat ctx a, (Sym ctx) :<: dom) => Proxy ctx -> String -> a -> ASTF dom aSource
A zero-argument symbol
sym1 :: (Typeable a, Sat ctx b, (Sym ctx) :<: dom) => Proxy ctx -> String -> (a -> b) -> ASTF dom a -> ASTF dom bSource
A one-argument symbol
sym2 :: (Typeable a, Typeable b, Sat ctx c, (Sym ctx) :<: dom) => Proxy ctx -> String -> (a -> b -> c) -> ASTF dom a -> ASTF dom b -> ASTF dom cSource
A two-argument symbol
sym3 :: (Typeable a, Typeable b, Typeable c, Sat ctx d, (Sym ctx) :<: dom) => Proxy ctx -> String -> (a -> b -> c -> d) -> ASTF dom a -> ASTF dom b -> ASTF dom c -> ASTF dom dSource
A three-argument symbol
sym4 :: (Typeable a, Typeable b, Typeable c, Typeable d, Sat ctx e, (Sym ctx) :<: dom) => Proxy ctx -> String -> (a -> b -> c -> d -> e) -> ASTF dom a -> ASTF dom b -> ASTF dom c -> ASTF dom d -> ASTF dom eSource
A four-argument symbol
prjSym :: (Sym ctx) :<: sup => Proxy ctx -> sup a -> Maybe (Sym ctx a)Source
Partial symbol projection with explicit context
exprHashSym :: IsSymbol expr => expr a -> HashSource
Default implementation of exprHash
renderPartSym :: IsSymbol expr => [String] -> expr a -> StringSource
Default implementation of renderPart
evaluateSym :: IsSymbol expr => expr a -> aSource
Default implementation of evaluate