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

Commit c746f93

Browse files
committed
Mendler-style recursion.
1 parent 050188f commit c746f93

1 file changed

Lines changed: 8 additions & 0 deletions

File tree

semantic-analysis/src/Analysis/Syntax.hs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
{-# LANGUAGE QuantifiedConstraints #-}
2+
{-# LANGUAGE RankNTypes #-}
23
module Analysis.Syntax
34
( -- * Syntax
45
Term(..)
56
, subterms
67
, foldTerm
78
, paraTerm
9+
, mendlerTerm
810
) where
911

1012
import qualified Data.Set as Set
@@ -42,3 +44,9 @@ paraTerm var sig = go
4244
where
4345
go (Var v) = var v
4446
go (Term s) = sig ((,) <*> go <$> s)
47+
48+
mendlerTerm :: (v -> r) -> (forall r' . (r' -> r) -> sig r'-> r) -> (Term sig v -> r)
49+
mendlerTerm var sig = go
50+
where
51+
go (Var v) = var v
52+
go (Term s) = sig go s

0 commit comments

Comments
 (0)