
garious:
Koen Claessen's "Parallel Parsing Processes," suggests their parsing combinators have been integrated into Parsec. If so, where is the +++ operator hiding?
Hoogle says: Control.Arrow.(+++) :: ArrowChoice a => a b c -> a b' c' -> a (Either b b') (Either c c') Text.Html.(+++) :: (HTML a, HTML b) => a -> b -> Html Text.ParserCombinators.ReadP.(+++) :: ReadP a -> ReadP a -> ReadP a Text.ParserCombinators.ReadPrec.(+++) :: ReadPrec a -> ReadPrec a -> ReadPrec a
Also, how do I determine what instances a datatype supports? Is Parsec an instance of Applicative?
Try :info on your type in ghci: Prelude Control.Applicative> :info Applicative class (Functor f) => Applicative f where pure :: a -> f a (<*>) :: f (a -> b) -> f a -> f b -- Defined in Control.Applicative instance (Monad m) => Applicative (WrappedMonad m) -- Defined in Control.Applicative instance Applicative Maybe -- Defined in Control.Applicative instance Applicative [] -- Defined in Control.Applicative instance Applicative IO -- Defined in Control.Applicative instance Applicative ((->) a) -- Defined in Control.Applicative instance Applicative ZipList -- Defined in Control.Applicative -- Don