@@ -27,6 +27,7 @@ import qualified Data.IntSet as IntSet
2727import Data.List.NonEmpty (nonEmpty )
2828import Data.Loc
2929import qualified Data.Map as Map
30+ import Data.Maybe (fromJust )
3031import Data.Name as Name
3132import Data.Scope
3233import qualified Data.Set as Set
@@ -77,10 +78,8 @@ forAll n body = send (PForAll (Data.Scope.bind1 n body))
7778forAlls :: (Eq a , Carrier sig m , Member Polytype sig , Foldable t ) => t a -> m a -> m a
7879forAlls ns body = foldr forAll body ns
7980
80- generalize :: (Carrier sig m , Member Naming sig ) => Term Monotype Meta -> m (Term (Polytype :+: Monotype ) Gensym )
81- generalize ty = namespace " generalize" $ do
82- Gensym root _ <- Name. fresh
83- pure (Gensym root <$> forAlls (IntSet. toList (mvs ty)) (hoistTerm R ty))
81+ generalize :: Term Monotype Meta -> Term (Polytype :+: Monotype ) Gensym
82+ generalize ty = fromJust (closed (forAlls (IntSet. toList (mvs ty)) (hoistTerm R ty)))
8483
8584
8685typecheckingFlowInsensitive :: [File (Term Core. Core Name )] -> (Heap Name (Term Monotype Meta ), [File (Either (Loc , String ) (Term (Polytype :+: Monotype ) Gensym ))])
@@ -89,7 +88,7 @@ typecheckingFlowInsensitive
8988 . runFresh
9089 . runNaming
9190 . runHeap (Gen (Gensym (Nil :> " root" ) 0 ))
92- . ( >>= traverse ( traverse ( traverse generalize)))
91+ . fmap ( fmap ( fmap ( fmap generalize)))
9392 . traverse runFile
9493
9594runFile :: ( Carrier sig m
0 commit comments