git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Import kinds for basic types
cbb46deGary Burgess
libraries/prelude/prelude.purs+6
@@ -1,5 +1,11 @@
1module Prelude where
1module Prelude where
2
2
3+ foreign import data String :: *
4+ foreign import data Number :: *
5+ foreign import data Boolean :: *
6+ foreign import data [] :: * -> *
7+ foreign import data (->) :: * -> * -> *
8+
3 id :: forall a. a -> a
9 id :: forall a. a -> a
4 id = \x -> x
10 id = \x -> x
5
11
src/Language/PureScript/Parser/Common.hs+3
@@ -239,6 +239,9 @@ natural = PT.natural tokenParser
239properName :: P.Parsec String u ProperName
239properName :: P.Parsec String u ProperName
240properName = lexeme $ ProperName <$> P.try ((:) <$> P.upper <*> many (PT.identLetter langDef) P.<?> "name")
240properName = lexeme $ ProperName <$> P.try ((:) <$> P.upper <*> many (PT.identLetter langDef) P.<?> "name")
241
241
242+properNameOrExternalType :: P.Parsec String u ProperName
243+properNameOrExternalType = P.try properName <|> (ProperName <$> (P.try (lexeme $ P.string "[]") <|> (lexeme $ P.string "(->)")))
244+
242-- |
245-- |
243-- Parse a qualified name, i.e. M.name or just name
246-- Parse a qualified name, i.e. M.name or just name
244--
247--
src/Language/PureScript/Parser/Declarations.hs+1−1
@@ -64,7 +64,7 @@ parseValueDeclaration =
64
64
65parseExternDeclaration :: P.Parsec String ParseState Declaration
65parseExternDeclaration :: P.Parsec String ParseState Declaration
66parseExternDeclaration = P.try (reserved "foreign") *> indented *> (reserved "import") *> indented *>
66parseExternDeclaration = P.try (reserved "foreign") *> indented *> (reserved "import") *> indented *>
67− (ExternDataDeclaration <$> (P.try (reserved "data") *> indented *> properName)
67+ (ExternDataDeclaration <$> (P.try (reserved "data") *> indented *> properNameOrExternalType)
68 <*> (lexeme (indented *> P.string "::") *> parseKind)
68 <*> (lexeme (indented *> P.string "::") *> parseKind)
69 <|> do ident <- parseNonReservedIdent
69 <|> do ident <- parseNonReservedIdent
70 js <- P.optionMaybe (parseJSLiteral <$> stringLiteral)
70 js <- P.optionMaybe (parseJSLiteral <$> stringLiteral)
src/Language/PureScript/TypeChecker/Kinds.hs−5
@@ -117,11 +117,6 @@ starIfUnknown k = k
117-- Infer a kind for a type
117-- Infer a kind for a type
118--
118--
119infer :: Type -> UnifyT Check Kind
119infer :: Type -> UnifyT Check Kind
120−infer t | t == tyNumber = return Star
121−infer t | t == tyString = return Star
122−infer t | t == tyBoolean = return Star
123−infer t | t == tyArray = return $ FunKind Star Star
124−infer t | t == tyFunction = return $ FunKind Star $ FunKind Star Star
125infer (Object row) = do
120infer (Object row) = do
126 k <- infer row
121 k <- infer row
127 k ?= Row Star
122 k ?= Row Star