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

Commit da0d780

Browse files
committed
Generalize runFile over the term type.
1 parent d817530 commit da0d780

File tree

1 file changed

+20
-11
lines changed

1 file changed

+20
-11
lines changed

semantic-core/src/Analysis/Concrete.hs

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
{-# LANGUAGE DerivingVia, FlexibleContexts, FlexibleInstances, LambdaCase, MultiParamTypeClasses, NamedFieldPuns, OverloadedStrings, RecordWildCards, TypeOperators, UndecidableInstances #-}
1+
{-# LANGUAGE DerivingVia, FlexibleContexts, FlexibleInstances, LambdaCase, MultiParamTypeClasses, NamedFieldPuns, OverloadedStrings, RankNTypes, RecordWildCards, TypeOperators, UndecidableInstances #-}
22
module Analysis.Concrete
33
( Concrete(..)
44
, concrete
@@ -74,16 +74,25 @@ concrete
7474
= run
7575
. runFresh
7676
. runHeap
77-
. traverse runFile
78-
79-
runFile :: ( Carrier sig m
80-
, Effect sig
81-
, Member Fresh sig
82-
, Member (State (Heap (Term (Core.Ann :+: Core.Core) User))) sig
83-
)
84-
=> File (Term (Core.Ann :+: Core.Core) User)
85-
-> m (File (Either (Loc, String) (Concrete (Term (Core.Ann :+: Core.Core) User))))
86-
runFile file = traverse run file
77+
. traverse (runFile eval)
78+
79+
runFile
80+
:: ( Carrier sig m
81+
, Effect sig
82+
, Foldable term
83+
, Member Fresh sig
84+
, Member (State (Heap (term User))) sig
85+
, Show (term User)
86+
)
87+
=> (forall sig m
88+
. (Carrier sig m, Member (Reader Loc) sig, MonadFail m)
89+
=> Analysis (term User) Precise (Concrete (term User)) m
90+
-> (term User -> m (Concrete (term User)))
91+
-> (term User -> m (Concrete (term User)))
92+
)
93+
-> File (term User)
94+
-> m (File (Either (Loc, String) (Concrete (term User))))
95+
runFile eval file = traverse run file
8796
where run = runReader (fileLoc file)
8897
. runFailWithLoc
8998
. runReader (mempty :: Env)

0 commit comments

Comments
 (0)