X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=src%2Fparse.icl;h=349c0e1dea4459f7eb862a6e8b88d0ae03a724d4;hb=db22521b4ba8a77e3bf845e38de3c0cb6e40a180;hp=fc6e740b946a818a46a582ce3ce4197727ffefb3;hpb=cdb033817c0b30f0ff27b0f4aa67b7cf93c36b4d;p=cc1516.git diff --git a/src/parse.icl b/src/parse.icl index fc6e740..349c0e1 100644 --- a/src/parse.icl +++ b/src/parse.icl @@ -150,8 +150,7 @@ parseVarDef = liftM2 VarDef (parseIdent >>= \i.if (i == "snd") (pure FieldSnd) empty)))) parseOp1 :: Parser Token Op1 -parseOp1 = trans1 DashToken UnMinus <|> - trans1 ExclamationToken UnNegation +parseOp1 = trans1 DashToken UnMinus <|> trans1 ExclamationToken UnNegation parseBBraces :: (Parser Token a) -> Parser Token a parseBBraces p = satTok BraceOpenToken *> p <* satTok BraceCloseToken @@ -168,7 +167,7 @@ parseTuple p = satTok BraceOpenToken *> <* satTok BraceCloseToken trans2 :: TokenValue (TokenValue -> a) -> Parser Token a -trans2 t f = satTok t >>= \(_, r).pure (f r) +trans2 t f = liftM (f o snd) $ satTok t trans1 :: TokenValue a -> Parser Token a trans1 t r = trans2 t $ const r