on master help sign in
Fix bug in type application when converting SourceSyntax.Type to Type.Type
c881bd8Evan Czaplicki
compiler/Type/Environment.hs+4−7
@@ -41,7 +41,7 @@ makeTypes datatypes =
41 kind n names = map (\name -> (name, n)) names
41 kind n names = map (\name -> (name, n)) names
42
42
43 builtins :: [(String,Int)]
43 builtins :: [(String,Int)]
44− builtins = concat [ map tuple [0..10]
44+ builtins = concat [ map tuple [0..9]
45 , kind 1 ["_List","Maybe","Signal"]
45 , kind 1 ["_List","Maybe","Signal"]
46 , kind 0 ["Int","Float","Char","Bool","Element"]
46 , kind 0 ["Int","Float","Char","Bool","Element"]
47 ]
47 ]
@@ -68,7 +68,7 @@ makeConstructors types datatypes =
68 , ("Just" , inst 1 1 $ \ [t] -> t ==> maybe t)
68 , ("Just" , inst 1 1 $ \ [t] -> t ==> maybe t)
69 , ("[]" , inst 0 1 $ \ [t] -> list t)
69 , ("[]" , inst 0 1 $ \ [t] -> list t)
70 , ("::" , inst 2 1 $ \ [t] -> t ==> list t ==> list t)
70 , ("::" , inst 2 1 $ \ [t] -> t ==> list t ==> list t)
71− ] ++ map tupleCtor [0..10]
71+ ] ++ map tupleCtor [0..9]
72
72
73
73
74
74
@@ -79,9 +79,7 @@ get env subDict key = Map.findWithDefault err key (subDict env)
79
79
80
80
81freshDataScheme :: Environment -> String -> IO (Int, [Variable], Type)
81freshDataScheme :: Environment -> String -> IO (Int, [Variable], Type)
82−freshDataScheme env name = do
82+freshDataScheme env name = get env constructor name
83− putStr "fresh " >> putStrLn name
84− get env constructor name
85
83
86
84
87instances :: Environment
85instances :: Environment
@@ -123,9 +121,8 @@ instantiateTypeWithContext env sourceType dict =
123 return (VarN var)
121 return (VarN var)
124
122
125 Src.Data name ts -> do
123 Src.Data name ts -> do
126− State.liftIO $ putStr "instantiate " >> putStrLn name
127 ts' <- mapM go ts
124 ts' <- mapM go ts
128− return $ foldr (\t result -> TermN $ App1 t result) (get env types name) ts'
125+ return $ foldl (\tyFn ty -> TermN $ App1 tyFn ty) (get env types name) ts'
129
126
130 Src.EmptyRecord -> return (TermN EmptyRecord1)
127 Src.EmptyRecord -> return (TermN EmptyRecord1)
131
128