projekty
/
fp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
HM type inference
[fp.git]
/
src
/
HM
/
Parser.hs
diff --git
a/src/HM/Parser.hs
b/src/HM/Parser.hs
index
47c4649
..
54e1e6a
100644
(file)
--- a/
src/HM/Parser.hs
+++ b/
src/HM/Parser.hs
@@
-13,7
+13,7
@@
module HM.Parser
( tRead
module HM.Parser
( tRead
- , parseTerm
+ , parseT
ypedT
erm
) where
import Data.Char (isAsciiLower, isAsciiUpper)
) where
import Data.Char (isAsciiLower, isAsciiUpper)
@@
-46,7
+46,8
@@
instance Show Term where
instance Show TypedTerm where
show (NTTerm t) = show t
instance Show TypedTerm where
show (NTTerm t) = show t
- show (TTerm t tp) = braced $ show t ++ " :: " ++ show tp
+ show (TTerm (Var x) tp) = x ++ " :: " ++ show tp
+ show (TTerm t tp) = braced (show t) ++ " :: " ++ show tp
instance Show Type where
show (Primitive t) = t
instance Show Type where
show (Primitive t) = t
@@
-65,11
+66,13
@@
tRead s = case parseOnly (parseTypedTerm <* endOfInput) (T.pack s) of
parseTerm :: Parser Term
parseTerm = parseLet <|>
parseApp <|>
parseTerm :: Parser Term
parseTerm = parseLet <|>
parseApp <|>
+ parseBraces parseTerm <|>
parseVar <|>
parseLambda
parseTermNoApp :: Parser Term
parseVar <|>
parseLambda
parseTermNoApp :: Parser Term
-parseTermNoApp = parseLet <|>
+parseTermNoApp = parseBraces parseTerm <|>
+ parseLet <|>
parseVar <|>
parseLambda
parseVar <|>
parseLambda
@@
-82,13
+85,13
@@
parseTypeAndTerm p = do
parseTypedTermNoApp :: Parser TypedTerm
parseTypedTermNoApp :: Parser TypedTerm
-parseTypedTermNoApp = parse
Braces parseTypedTerm
<|>
- parse
TypeAndTerm parseTermNoApp
<|>
+parseTypedTermNoApp = parse
TypeAndTerm parseTermNoApp
<|>
+ parse
Braces parseTypedTerm
<|>
(NTTerm <$> parseTermNoApp)
parseTypedTerm :: Parser TypedTerm
(NTTerm <$> parseTermNoApp)
parseTypedTerm :: Parser TypedTerm
-parseTypedTerm = parse
Braces parseTyped
Term <|>
- parse
TypeAndTerm parse
Term <|>
+parseTypedTerm = parse
TypeAndTerm parse
Term <|>
+ parse
Braces parseTyped
Term <|>
(NTTerm <$> parseTerm)
parseType :: Parser Type
(NTTerm <$> parseTerm)
parseType :: Parser Type