@@ -69,7 +69,7 @@ makeEffect ''GlobalCheck
6969
7070-- | Interactions that happen at the level of the
7171data ModuleCheck a where -- Module
72- KCTypeDefinition :: ModName -> Context -> PC. TyDef -> ModuleCheck Kind
72+ KCTypeDefinition :: PC. ModuleName -> Context -> PC. TyDef -> ModuleCheck Kind
7373
7474-- NOTE(cstml & gnumonik): Lets reach consensus on these - Note(1).
7575-- KCClassInstance :: Context -> P.InstanceClause -> ModuleCheck ()
@@ -78,9 +78,9 @@ data ModuleCheck a where -- Module
7878makeEffect ''ModuleCheck
7979
8080data KindCheck a where
81- TypesFromTyDef :: ModName -> PC. TyDef -> KindCheck [Type ]
82- InferTypeKind :: ModName -> PC. TyDef -> Context -> Type -> KindCheck Kind
83- CheckKindConsistency :: ModName -> PC. TyDef -> Context -> Kind -> KindCheck Kind
81+ TypesFromTyDef :: PC. ModuleName -> PC. TyDef -> KindCheck [Type ]
82+ InferTypeKind :: PC. ModuleName -> PC. TyDef -> Context -> Type -> KindCheck Kind
83+ CheckKindConsistency :: PC. ModuleName -> PC. TyDef -> Context -> Kind -> KindCheck Kind
8484
8585makeEffect ''KindCheck
8686
@@ -120,7 +120,7 @@ moduleStrategy :: Transform GlobalCheck ModuleCheck
120120moduleStrategy = reinterpret $ \ case
121121 CreateContext ci -> evalState (mempty @ (M. Map Variable PC. TyDef )) . resolveCreateContext $ ci
122122 ValidateModule cx md -> do
123- traverse_ (kCTypeDefinition (module2ModuleName md) cx) (md ^. # typeDefs)
123+ traverse_ (kCTypeDefinition (module2ModName md) cx) (md ^. # typeDefs)
124124
125125localStrategy :: Transform ModuleCheck KindCheck
126126localStrategy = reinterpret $ \ case
@@ -141,30 +141,30 @@ localStrategy = reinterpret $ \case
141141-- | Internal to External term association map ~ a mapping between a Variable and the term it originated from. Allows us to throw meaningful errors.
142142type IETermMap = M. Map Variable (Either PC. TyVar PC. TyRef )
143143
144- type HandleErrorEnv a = Eff '[Reader ModName , Writer IETermMap ] a
144+ type HandleErrorEnv a = Eff '[Reader PC. ModuleName , Writer IETermMap ] a
145145
146146runKindCheck :: forall effs {a }. Member Err effs => Eff (KindCheck ': effs ) a -> Eff effs a
147147runKindCheck = interpret $ \ case
148148 TypesFromTyDef modName tydef -> runReader modName (tyDef2Types tydef)
149149 InferTypeKind modName tyDef ctx ty -> either (handleErr modName tyDef) pure $ infer ctx ty
150150 CheckKindConsistency modName def ctx k -> runReader modName $ resolveKindConsistency def ctx k
151151 where
152- handleErr :: forall {b }. ModName -> PC. TyDef -> InferErr -> Eff effs b
152+ handleErr :: forall {b }. PC. ModuleName -> PC. TyDef -> InferErr -> Eff effs b
153153 handleErr modName td = \ case
154154 InferUnboundTermErr uA -> do
155155 tt <- getTermType modName td uA
156156 throwError . PC. CompKindCheckError $ case tt of
157- Right r -> PC. UnboundTyRefError td r
158- Left l -> PC. UnboundTyVarError td l
157+ Right r -> PC. UnboundTyRefError td r modName
158+ Left l -> PC. UnboundTyVarError td l modName
159159 InferUnifyTermErr (I. Constraint (k1, k2)) ->
160- throwError . PC. CompKindCheckError $ PC. IncorrectApplicationError (tyDef2TyName td) (kind2ProtoKind k1) (kind2ProtoKind k2)
160+ throwError . PC. CompKindCheckError $ PC. IncorrectApplicationError td (kind2ProtoKind k1) (kind2ProtoKind k2) modName
161161 InferRecursiveSubstitutionErr _ ->
162- throwError . PC. CompKindCheckError $ PC. RecursiveKindError $ tyDef2TyName td
162+ throwError . PC. CompKindCheckError $ PC. RecursiveKindError td modName
163163 InferImpossibleErr t ->
164164 throwError . PC. InternalError $ t
165165
166166 -- Gets the original term associated with the Variable.
167- getTermType :: ModName -> PC. TyDef -> Variable -> Eff effs (Either PC. TyVar PC. TyRef )
167+ getTermType :: PC. ModuleName -> PC. TyDef -> Variable -> Eff effs (Either PC. TyVar PC. TyRef )
168168 getTermType modName td va = do
169169 let termMap = snd . run . runWriter . runReader modName $ tyDef2Map td
170170 case termMap M. !? va of
@@ -229,27 +229,24 @@ runKindCheck = interpret $ \case
229229
230230resolveKindConsistency ::
231231 forall effs .
232- Members '[Reader ModName , Err ] effs =>
232+ Members '[Reader PC. ModuleName , Err ] effs =>
233233 PC. TyDef ->
234234 Context ->
235235 Kind ->
236236 Eff effs Kind
237237resolveKindConsistency tydef _ctx inferredKind = do
238- mName <- ask @ ModName
239- let tyName = tyDef2TyName tydef
240- (_, k) <- tyDef2NameAndKind mName tydef
241- guard tyName k inferredKind
238+ modname <- ask @ PC. ModuleName
239+ (_, k) <- tyDef2NameAndKind (moduleName2ModName modname) tydef
240+ guard tydef k inferredKind modname
242241 pure inferredKind
243242 where
244- guard :: PC. TyName -> Kind -> Kind -> Eff effs ()
245- guard n i d
243+ guard :: PC. TyDef -> Kind -> Kind -> PC. ModuleName -> Eff effs ()
244+ guard t i d mn
246245 | i == d = pure ()
247246 | otherwise =
248- throwError . PC. CompKindCheckError $
249- PC. InconsistentTypeError n (kind2ProtoKind i) (kind2ProtoKind d)
250-
251- tyDef2TyName :: PC. TyDef -> PC. TyName
252- tyDef2TyName (PC. TyDef n _ _) = n
247+ throwError
248+ . PC. CompKindCheckError
249+ $ PC. InconsistentTypeError t (kind2ProtoKind i) (kind2ProtoKind d) mn
253250
254251--------------------------------------------------------------------------------
255252-- Context Creation
@@ -379,14 +376,14 @@ tyArg2Var = LocalRef . view (#argName . #name)
379376
380377constructor2Type ::
381378 forall eff .
382- Members '[Reader ModName , Err ] eff =>
379+ Members '[Reader PC. ModuleName , Err ] eff =>
383380 PC. Constructor ->
384381 Eff eff Type
385382constructor2Type co = product2Type (co ^. # product )
386383
387384product2Type ::
388385 forall eff .
389- Members '[Reader ModName , Err ] eff =>
386+ Members '[Reader PC. ModuleName , Err ] eff =>
390387 PC. Product ->
391388 Eff eff Type
392389product2Type = \ case
@@ -395,14 +392,14 @@ product2Type = \case
395392
396393record2Type ::
397394 forall eff .
398- Members '[Reader ModName , Err ] eff =>
395+ Members '[Reader PC. ModuleName , Err ] eff =>
399396 PC. Record ->
400397 Eff eff Type
401398record2Type r = foldWithProduct <$> traverse field2Type (toList $ r ^. # fields)
402399
403400tuple2Type ::
404401 forall eff .
405- Members '[Reader ModName , Err ] eff =>
402+ Members '[Reader PC. ModuleName , Err ] eff =>
406403 PC. Tuple ->
407404 Eff eff Type
408405tuple2Type tu = do
@@ -411,14 +408,14 @@ tuple2Type tu = do
411408
412409field2Type ::
413410 forall eff .
414- Members '[Reader ModName , Err ] eff =>
411+ Members '[Reader PC. ModuleName , Err ] eff =>
415412 PC. Field ->
416413 Eff eff Type
417414field2Type f = ty2Type (f ^. # fieldTy)
418415
419416ty2Type ::
420417 forall eff .
421- Members '[Reader ModName , Err ] eff =>
418+ Members '[Reader PC. ModuleName , Err ] eff =>
422419 PC. Ty ->
423420 Eff eff Type
424421ty2Type = \ case
@@ -437,7 +434,7 @@ tyVar2Variable = LocalRef . view (#varName . #name)
437434
438435tyApp2Type ::
439436 forall eff .
440- Members '[Reader ModName , Err ] eff =>
437+ Members '[Reader PC. ModuleName , Err ] eff =>
441438 PC. TyApp ->
442439 Eff eff Type
443440tyApp2Type ta = do
@@ -447,14 +444,14 @@ tyApp2Type ta = do
447444
448445tyRef2Type ::
449446 forall eff .
450- Members '[Reader ModName , Err ] eff =>
447+ Members '[Reader PC. ModuleName , Err ] eff =>
451448 PC. TyRef ->
452449 Eff eff Type
453450tyRef2Type = fmap Var . tyRef2Variable
454451
455452tyRef2Variable ::
456453 forall eff .
457- Members '[Reader ModName ] eff =>
454+ Members '[Reader PC. ModuleName ] eff =>
458455 PC. TyRef ->
459456 Eff eff Variable
460457tyRef2Variable = \ case
@@ -463,16 +460,15 @@ tyRef2Variable = \case
463460
464461localTyRef2Variable ::
465462 forall eff .
466- Members '[Reader ModName ] eff =>
463+ Members '[Reader PC. ModuleName ] eff =>
467464 PC. LocalRef ->
468465 Eff eff Variable
469466localTyRef2Variable ltr = do
470- moduleName <- ask
467+ moduleName <- moduleName2ModName <$> ask
471468 pure $ ForeignRef moduleName (ltr ^. # tyName . # name)
472469
473470foreignTyRef2Variable ::
474471 forall eff .
475- Members '[Reader ModName ] eff =>
476472 PC. ForeignRef ->
477473 Eff eff Variable
478474foreignTyRef2Variable ftr = do
@@ -488,7 +484,7 @@ foreignTyRef2Variable ftr = do
488484-}
489485tyDef2Types ::
490486 forall eff .
491- Members '[Reader ModName , Err ] eff =>
487+ Members '[Reader PC. ModuleName , Err ] eff =>
492488 PC. TyDef ->
493489 Eff eff [Type ]
494490tyDef2Types tyde = do
@@ -498,14 +494,14 @@ tyDef2Types tyde = do
498494
499495tyAbsRHS2Types ::
500496 forall eff .
501- Members '[Reader ModName , Err ] eff =>
497+ Members '[Reader PC. ModuleName , Err ] eff =>
502498 PC. TyAbs ->
503499 Eff eff [Type ]
504500tyAbsRHS2Types tyab = tyBody2Types (tyab ^. # tyBody)
505501
506502tyBody2Types ::
507503 forall eff .
508- Members '[Reader ModName , Err ] eff =>
504+ Members '[Reader PC. ModuleName , Err ] eff =>
509505 PC. TyBody ->
510506 Eff eff [Type ]
511507tyBody2Types = \ case
@@ -514,7 +510,7 @@ tyBody2Types = \case
514510
515511sum2Types ::
516512 forall eff .
517- Members '[Reader ModName , Err ] eff =>
513+ Members '[Reader PC. ModuleName , Err ] eff =>
518514 PC. Sum ->
519515 Eff eff [Type ]
520516sum2Types su = traverse constructor2Type $ M. elems (su ^. # constructors)
@@ -531,5 +527,5 @@ foldWithProduct = foldl' (App . App (Var tyProd)) (Var tyUnit)
531527foldWithSum :: [Type ] -> Type
532528foldWithSum = foldl' (App . App (Var tySum)) (Var tyVoid)
533529
534- module2ModuleName :: PC. Module -> ModName
535- module2ModuleName = moduleName2ModName . ( ^. # moduleName)
530+ module2ModName :: PC. Module -> PC. ModuleName
531+ module2ModName = view # moduleName
0 commit comments