@@ -115,10 +115,20 @@ data Environment = Environment {
115115 } deriving (Show)
116116
117117-- |
118−-- An empty environment with no values and no types defined
118+-- The basic types existing in the external javascript environment
119119--
120−emptyEnvironment :: Environment
121−emptyEnvironment = Environment M.empty M.empty M.empty M.empty []
120+jsTypes ::M.Map (ModuleName, ProperName) (Kind, TypeDeclarationKind)
121+jsTypes = M.fromList [ ((ModuleName $ ProperName "Prim", ProperName "Function"), (FunKind Star $ FunKind Star Star, ExternData))
122+ , ((ModuleName $ ProperName "Prim", ProperName "Array"), (FunKind Star Star, ExternData))
123+ , ((ModuleName $ ProperName "Prim", ProperName "String"), (Star, ExternData))
124+ , ((ModuleName $ ProperName "Prim", ProperName "Number"), (Star, ExternData))
125+ , ((ModuleName $ ProperName "Prim", ProperName "Boolean"), (Star, ExternData)) ]
126+
127+-- |
128+-- The initial environment with no values and only the default javascript types defined
129+--
130+initEnvironment :: Environment
131+initEnvironment = Environment M.empty jsTypes M.empty M.empty []
122132
123133-- |
124134-- Temporarily bind a collection of names to values
@@ -271,7 +281,7 @@ modifyEnv f = modify (\s -> s { checkEnv = f (checkEnv s) })
271281--
272282runCheck :: Check a -> Either String (a, Environment)
273283runCheck c = do
274− (a, s) <- flip runStateT (CheckState emptyEnvironment 0 0 Nothing) $ unCheck c
284+ (a, s) <- flip runStateT (CheckState initEnvironment 0 0 Nothing) $ unCheck c
275285 return (a, checkEnv s)
276286
277287-- |