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

Commit 4cbc23b

Browse files
committed
🔥 cata.
1 parent 07616d5 commit 4cbc23b

File tree

1 file changed

+0
-12
lines changed

1 file changed

+0
-12
lines changed

semantic-core/src/Data/Term.hs

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,12 @@ module Data.Term
33
( Term(..)
44
, Syntax(..)
55
, iter
6-
, cata
76
, interpret
87
) where
98

109
import Control.Effect.Carrier
1110
import Control.Monad (ap)
1211
import Control.Monad.Module
13-
import Data.Coerce (coerce)
14-
import Data.Functor.Const
1512
import Data.Scope
1613

1714
data Term sig a
@@ -79,15 +76,6 @@ iter var alg bound = go
7976
Var a -> var (free a)
8077
Term t -> alg (foldSyntax go bound free t)
8178

82-
cata :: Syntax sig
83-
=> (a -> b)
84-
-> (forall a . sig (Const b) a -> b)
85-
-> (Incr () b -> a)
86-
-> (x -> a)
87-
-> Term sig x
88-
-> b
89-
cata var alg k h = getConst . iter (coerce var) (Const . alg) (coerce k) (Const . h)
90-
9179

9280
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
9381
interpret = iter id send

0 commit comments

Comments
 (0)