@@ -33,7 +33,9 @@ typeUnambiguous :: (Monad m) => ParsecT [Char] u m ParseType
3333typeUnambiguous = typeList <|> typeTuple
3434
3535typeSimple :: (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
3739
3840typeApp :: (Monad m) => ParsecT [Char] u m ParseType
3941typeApp = do name <- capVar <?> "type constructor"
@@ -50,7 +52,8 @@ typeExpr = do
5052 Nothing -> return t1
5153
5254typeConstructor :: (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)
5457
5558datatype :: (Monad m) => ParsecT [Char] u m Statement
5659datatype = do