Skip to content
This repository was archived by the owner on Apr 1, 2025. It is now read-only.

Commit a1ee196

Browse files
committed
Define a helper to interpret a Term in some other eff-Carrier.
1 parent 1c85529 commit a1ee196

File tree

1 file changed

+5
-0
lines changed

1 file changed

+5
-0
lines changed

semantic-core/src/Data/Term.hs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ module Data.Term
44
, Syntax(..)
55
, iter
66
, cata
7+
, interpret
78
) where
89

910
import Control.Effect.Carrier
@@ -86,3 +87,7 @@ cata :: Syntax sig
8687
-> Term sig x
8788
-> b
8889
cata var alg k h = getConst . iter (coerce var) (Const . alg) (coerce k) (Const . h)
90+
91+
92+
interpret :: (Carrier sig m, Member eff sig, Syntax eff) => (forall a . Incr () (m a) -> m (Incr () (m a))) -> (a -> m b) -> Term eff a -> m b
93+
interpret = iter id send

0 commit comments

Comments
 (0)