I suggest adding the following type-specialized variants to Data.Attoparsec.Char8: (<*.) :: Applicative f => f a -> f ByteString -> f a (<*.) = (<*) (.*>) :: Applicative f => f ByteString -> f a -> f a (.*>) = (*>)