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

Commit 3861c38

Browse files
committed
Paramorphic fold.
1 parent ff22c0b commit 3861c38

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

semantic-analysis/src/Analysis/Syntax.hs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ module Analysis.Syntax
44
Term(..)
55
, subterms
66
, foldTerm
7+
, paraTerm
78
) where
89

910
import qualified Data.Set as Set
@@ -37,3 +38,9 @@ foldTerm var sig = go
3738
where
3839
go (Var v) = var v
3940
go (Term s) = sig (go <$> s)
41+
42+
paraTerm :: Functor sig => (v -> r) -> (sig (Term sig v, r) -> r) -> (Term sig v -> r)
43+
paraTerm var sig = go
44+
where
45+
go (Var v) = var v
46+
go (Term s) = sig ((,) <*> go <$> s)

0 commit comments

Comments
 (0)