on master help sign in
Make sure that `String` is treated as `[Char]`
254dabfevancz
elm/src/Parse/ParseTypes.hs+5−2
@@ -33,7 +33,9 @@ typeUnambiguous :: (Monad m) => ParsecT [Char] u m ParseType
33typeUnambiguous = typeList <|> typeTuple
33typeUnambiguous = typeList <|> typeTuple
34
34
35typeSimple :: (Monad m) => ParsecT [Char] u m ParseType
35typeSimple :: (Monad m) => ParsecT [Char] u m ParseType
36−typeSimple = VarPT <$> var
36+typeSimple = dealias <$> var
37+ where dealias "String" = listPT (VarPT "Char")
38+ dealias v = VarPT v
37
39
38typeApp :: (Monad m) => ParsecT [Char] u m ParseType
40typeApp :: (Monad m) => ParsecT [Char] u m ParseType
39typeApp = do name <- capVar <?> "type constructor"
41typeApp = do name <- capVar <?> "type constructor"
@@ -50,7 +52,8 @@ typeExpr = do
50 Nothing -> return t1
52 Nothing -> return t1
51
53
52typeConstructor :: (Monad m) => ParsecT [Char] u m (String, [ParseType])
54typeConstructor :: (Monad m) => ParsecT [Char] u m (String, [ParseType])
53−typeConstructor = (,) <$> (capVar <?> "another type constructor") <*> spacePrefix (typeSimple <|> typeUnambiguous)
55+typeConstructor = (,) <$> (capVar <?> "another type constructor")
56+ <*> spacePrefix (typeSimple <|> typeUnambiguous)
54
57
55datatype :: (Monad m) => ParsecT [Char] u m Statement
58datatype :: (Monad m) => ParsecT [Char] u m Statement
56datatype = do
59datatype = do