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

Commit 15e5731

Browse files
committed
Generalize concrete over the term types.
1 parent da0d780 commit 15e5731

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

semantic-core/src/Analysis/Concrete.hs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import Control.Effect.NonDet
2020
import Control.Effect.Reader hiding (Local)
2121
import Control.Effect.State
2222
import Control.Monad ((<=<), guard)
23-
import qualified Data.Core as Core
2423
import Data.File
2524
import Data.Function (fix)
2625
import qualified Data.IntMap as IntMap
@@ -30,7 +29,6 @@ import qualified Data.Map as Map
3029
import Data.Name
3130
import Data.Semigroup (Last (..))
3231
import qualified Data.Set as Set
33-
import Data.Term
3432
import Data.Text (Text, pack)
3533
import Data.Traversable (for)
3634
import Prelude hiding (fail)
@@ -69,8 +67,17 @@ data Edge = Lexical | Import
6967
--
7068
-- >>> map fileBody (snd (concrete [File (Loc "bool" emptySpan) (Core.bool True)]))
7169
-- [Right (Bool True)]
72-
concrete :: [File (Term (Core.Ann :+: Core.Core) User)] -> (Heap (Term (Core.Ann :+: Core.Core) User), [File (Either (Loc, String) (Concrete (Term (Core.Ann :+: Core.Core) User)))])
7370
concrete
71+
:: (Foldable term, Show (term User))
72+
=> (forall sig m
73+
. (Carrier sig m, Member (Reader Loc) sig, MonadFail m)
74+
=> Analysis (term User) Precise (Concrete (term User)) m
75+
-> (term User -> m (Concrete (term User)))
76+
-> (term User -> m (Concrete (term User)))
77+
)
78+
-> [File (term User)]
79+
-> (Heap (term User), [File (Either (Loc, String) (Concrete (term User)))])
80+
concrete eval
7481
= run
7582
. runFresh
7683
. runHeap

0 commit comments

Comments
 (0)