-parseFunDecl = parseIdent <* satTok BraceOpenToken
- >>= \ident->parseSepList CommaToken parseIdent <* satTok BraceCloseToken
- >>= \args->parseFunType <* satTok CBraceOpenToken
- >>= \funtype->many parseVarDecl
- >>= \vardecls->many parseStmt
- <* satTok CBraceCloseToken
- >>= \stmts->pure $ FunDecl ident args funtype vardecls stmts
+parseFunDecl = liftM5 FunDecl
+ (parseIdent <* satTok BraceOpenToken)
+ (parseSepList CommaToken parseIdent <* satTok BraceCloseToken)
+ (parseFunType <* satTok CBraceOpenToken)
+ (many parseVarDecl)
+ (many parseStmt <* satTok CBraceCloseToken)