symparsec-2.0.0: src/Symparsec/Parser/Try.hs
{-# LANGUAGE UndecidableInstances #-}
module Symparsec.Parser.Try ( type Try ) where
import Symparsec.Parser.Common
-- | Run the given parser, backtracking on error.
type Try :: PParser a -> PParser a
data Try p s
type instance App (Try p) s = Try' s (p @@ s)
type Try' :: PState -> PReply a -> PReply a
type family Try' sPrev rep where
Try' sPrev ('Reply (OK a) s) = 'Reply (OK a) s
Try' sPrev ('Reply (Err e) s) = 'Reply (Err e) sPrev