From adc85b55726b80d2eb18696f2b5da1b677af00a5 Mon Sep 17 00:00:00 2001 From: Brandon Dyck Date: Tue, 10 Sep 2024 14:38:18 -0600 Subject: [PATCH] Rewrite Map in terms of Bind and Return --- gigaparsec.go | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) 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)) + }) }