diff --git a/gigaparsec.go b/gigaparsec.go index 874f7a3..f33f6ad 100644 --- a/gigaparsec.go +++ b/gigaparsec.go @@ -190,16 +190,7 @@ func Try[In, Out any](p Parser[In, Out]) Parser[In, Out] { } func Map[In, Out1, Out2 any](p Parser[In, Out1], f func(Out1) Out2) Parser[In, Out2] { - return func(input State[In]) (bool, Result[In, Out2], error) { - consumed, reply, err := p(input) - if err != nil { - return consumed, Result[In, Out2]{}, err - } - reply2 := Result[In, Out2]{ - Value: f(reply.Value), - State: reply.State, - Message: reply.Message, - } - return consumed, reply2, nil - } + return Bind(p, func(out Out1) Parser[In, Out2] { + return Return[In](f(out)) + }) }