@@ -22,13 +22,15 @@ import Control.Effect.State
2222import Control.Monad ((<=<) , guard )
2323import qualified Data.Core as Core
2424import Data.File
25+ import Data.Foldable (foldl' )
2526import Data.Function (fix )
2627import qualified Data.IntMap as IntMap
2728import qualified Data.IntSet as IntSet
2829import Data.Loc
2930import qualified Data.Map as Map
3031import Data.Monoid (Alt (.. ))
31- import Data.Name
32+ import Data.Name hiding (fresh )
33+ import Data.Term
3234import Data.Text (Text , pack )
3335import Prelude hiding (fail )
3436
@@ -39,7 +41,7 @@ newtype FrameId = FrameId { unFrameId :: Precise }
3941 deriving (Eq , Ord , Show )
4042
4143data Concrete
42- = Closure Loc Name Core. Core Precise
44+ = Closure Loc Name ( Term Core. Core Name ) Precise
4345 | Unit
4446 | Bool Bool
4547 | String Text
@@ -61,22 +63,24 @@ type Heap = IntMap.IntMap Concrete
6163
6264-- | Concrete evaluation of a term to a value.
6365--
64- -- >>> map fileBody (snd (concrete [File (Loc "bool" emptySpan) (Core.Bool True)]))
66+ -- >>> map fileBody (snd (concrete [File (Loc "bool" emptySpan) (Core.bool True)]))
6567-- [Right (Bool True)]
66- concrete :: [File Core. Core ] -> (Heap , [File (Either (Loc , String ) Concrete )])
68+ concrete :: [File ( Term Core. Core Name ) ] -> (Heap , [File (Either (Loc , String ) Concrete )])
6769concrete
6870 = run
6971 . runFresh
72+ . runNaming
7073 . runHeap
7174 . traverse runFile
7275
7376runFile :: ( Carrier sig m
7477 , Effect sig
7578 , Member Fresh sig
79+ , Member Naming sig
7680 , Member (Reader FrameId ) sig
7781 , Member (State Heap ) sig
7882 )
79- => File Core. Core
83+ => File ( Term Core. Core Name )
8084 -> m (File (Either (Loc , String ) Concrete ))
8185runFile file = traverse run file
8286 where run = runReader (fileLoc file)
@@ -200,10 +204,7 @@ addressStyle heap = (G.defaultStyle vertex) { G.edgeAttributes }
200204 Obj _ -> " {}"
201205 showPos (Pos l c) = pack (show l) <> " :" <> pack (show c)
202206 fromName (User s) = s
203- fromName (Gen sym) = fromGensym sym
204- fromName (Path p) = pack $ show p
205- fromGensym (Root s) = s
206- fromGensym (ss :/ (s, i)) = fromGensym ss <> " ." <> s <> pack (show i)
207+ fromName (Gen (Gensym ss i)) = foldl' (\ ss s -> ss <> " ." <> s) (pack (show i)) ss
207208
208209data EdgeType
209210 = Edge Core. Edge
0 commit comments