Update demos and adds <|

This commit is contained in:
2026-05-13 19:39:15 -05:00
parent 8f7684a1bb
commit e3dcf5edd7
14 changed files with 333 additions and 127 deletions

View File

@@ -112,8 +112,8 @@ parseExpressionM = choice
, try parseLambdaM
, try parseLambdaExpressionM
, try parseListLiteralM
, try parseApplicationM
, try parseTreeTermM
, try parseArrowLeftM
, parseLiteralM
]
@@ -138,7 +138,7 @@ parseLambdaM = do
parseLambdaExpressionM :: ParserM TricuAST
parseLambdaExpressionM = choice
[ try parseLambdaApplicationM
[ try parseLambdaArrowLeftM
, parseAtomicLambdaM
]
@@ -172,6 +172,34 @@ parseLambdaApplicationM = do
pure arg
pure $ foldl SApp func args
parseArrowLeftM :: ParserM TricuAST
parseArrowLeftM = do
left <- parseApplicationM
mArrow <- optional (try $ do
scnParserM
satisfyM (== LArrowLeft))
case mArrow of
Nothing -> return left
Just _ -> do
skipMany (satisfyM (== LNewline))
scnParserM
right <- parseExpressionM
return $ SApp left right
parseLambdaArrowLeftM :: ParserM TricuAST
parseLambdaArrowLeftM = do
left <- parseLambdaApplicationM
mArrow <- optional (try $ do
scnParserM
satisfyM (== LArrowLeft))
case mArrow of
Nothing -> return left
Just _ -> do
skipMany (satisfyM (== LNewline))
scnParserM
right <- parseLambdaExpressionM
return $ SApp left right
parseAtomicBaseM :: ParserM TricuAST
parseAtomicBaseM = choice
[ parseTreeLeafM