{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE FunctionalDependencies #-}
{-# LANGUAGE ImpredicativeTypes #-}
{-# LANGUAGE UndecidableInstances #-}
module Text.Pup.Class
(
Tokens (..),
(<?>),
chunk,
anySingle,
anySingleBut,
oneOf,
noneOf,
takeRest,
atEnd,
Breaks (..),
WadlerLeijen (..),
LookAhead (..),
Annotations (..),
ParseErrors (..),
Trivial (..),
)
where
import Control.Additive
import Control.Monad.Indexed qualified as Indexed
import Control.Monad.Indexed.Cont2 qualified as Cont2
import Data.Functor
class (Eq tok, Eq chunk) => Tokens tok chunk m | m -> tok chunk where
eof :: m r r ()
single :: tok -> m r r tok
satisfy :: (tok -> Bool) -> m (tok -> r) r tok
tokens ::
(chunk -> chunk -> Bool) ->
chunk ->
m (chunk -> r) r chunk
takeWhileP ::
Maybe String ->
(tok -> Bool) ->
m (chunk -> r) r chunk
takeWhile1P ::
Maybe String ->
(tok -> Bool) ->
m (chunk -> r) r chunk
takeP ::
Maybe String ->
Int ->
m (chunk -> r) r chunk
label :: String -> m r r' a -> m r r' a
hidden :: m r r' a -> m r r' a
hidden = String -> m r r' a -> m r r' a
forall r r' a. String -> m r r' a -> m r r' a
forall tok chunk (m :: * -> * -> * -> *) r r' a.
Tokens tok chunk m =>
String -> m r r' a -> m r r' a
label String
""
(<?>) :: (Tokens chunk tok m) => m r r' a -> String -> m r r' a
<?> :: forall chunk tok (m :: * -> * -> * -> *) r r' a.
Tokens chunk tok m =>
m r r' a -> String -> m r r' a
(<?>) = (String -> m r r' a -> m r r' a) -> m r r' a -> String -> m r r' a
forall a b c. (a -> b -> c) -> b -> a -> c
flip String -> m r r' a -> m r r' a
forall r r' a. String -> m r r' a -> m r r' a
forall tok chunk (m :: * -> * -> * -> *) r r' a.
Tokens tok chunk m =>
String -> m r r' a -> m r r' a
label
{-# INLINE (<?>) #-}
infix 0 <?>
anySingle :: (Tokens tok chunk m) => m (tok -> r) r (tok)
anySingle :: forall tok chunk (m :: * -> * -> * -> *) r.
Tokens tok chunk m =>
m (tok -> r) r tok
anySingle = (tok -> Bool) -> m (tok -> r) r tok
forall r. (tok -> Bool) -> m (tok -> r) r tok
forall tok chunk (m :: * -> * -> * -> *) r.
Tokens tok chunk m =>
(tok -> Bool) -> m (tok -> r) r tok
satisfy (Bool -> tok -> Bool
forall a b. a -> b -> a
const Bool
True)
{-# INLINE anySingle #-}
anySingleBut ::
(Tokens tok chunk m) =>
tok ->
m (tok -> r) r tok
anySingleBut :: forall tok chunk (m :: * -> * -> * -> *) r.
Tokens tok chunk m =>
tok -> m (tok -> r) r tok
anySingleBut tok
t = (tok -> Bool) -> m (tok -> r) r tok
forall r. (tok -> Bool) -> m (tok -> r) r tok
forall tok chunk (m :: * -> * -> * -> *) r.
Tokens tok chunk m =>
(tok -> Bool) -> m (tok -> r) r tok
satisfy (tok -> tok -> Bool
forall a. Eq a => a -> a -> Bool
/= tok
t)
{-# INLINE anySingleBut #-}
oneOf ::
(Foldable f, Tokens tok chunk m) =>
f tok ->
m (tok -> r) r tok
oneOf :: forall (f :: * -> *) tok chunk (m :: * -> * -> * -> *) r.
(Foldable f, Tokens tok chunk m) =>
f tok -> m (tok -> r) r tok
oneOf f tok
cs = (tok -> Bool) -> m (tok -> r) r tok
forall r. (tok -> Bool) -> m (tok -> r) r tok
forall tok chunk (m :: * -> * -> * -> *) r.
Tokens tok chunk m =>
(tok -> Bool) -> m (tok -> r) r tok
satisfy (\tok
x -> tok -> f tok -> Bool
forall a. Eq a => a -> f a -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem tok
x f tok
cs)
{-# INLINE oneOf #-}
noneOf ::
(Foldable f, Tokens tok chunk m) =>
f tok ->
m (tok -> r) r tok
noneOf :: forall (f :: * -> *) tok chunk (m :: * -> * -> * -> *) r.
(Foldable f, Tokens tok chunk m) =>
f tok -> m (tok -> r) r tok
noneOf f tok
cs = (tok -> Bool) -> m (tok -> r) r tok
forall r. (tok -> Bool) -> m (tok -> r) r tok
forall tok chunk (m :: * -> * -> * -> *) r.
Tokens tok chunk m =>
(tok -> Bool) -> m (tok -> r) r tok
satisfy (\tok
x -> tok -> f tok -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
notElem tok
x f tok
cs)
{-# INLINE noneOf #-}
chunk ::
(Indexed.Applicative m, Cont2.Stacked m, Tokens tok chunk m) =>
chunk ->
m r r ()
chunk :: forall (m :: * -> * -> * -> *) tok chunk r.
(Applicative m, Stacked m, Tokens tok chunk m) =>
chunk -> m r r ()
chunk chunk
s = m r r chunk -> m r r ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (m r r chunk -> m r r ()) -> m r r chunk -> m r r ()
forall a b. (a -> b) -> a -> b
$ (chunk -> chunk -> Bool) -> chunk -> m (chunk -> r) r chunk
forall r.
(chunk -> chunk -> Bool) -> chunk -> m (chunk -> r) r chunk
forall tok chunk (m :: * -> * -> * -> *) r.
Tokens tok chunk m =>
(chunk -> chunk -> Bool) -> chunk -> m (chunk -> r) r chunk
tokens chunk -> chunk -> Bool
forall a. Eq a => a -> a -> Bool
(==) chunk
s m (chunk -> r) r chunk -> chunk -> m r r chunk
forall (m :: * -> * -> * -> *) a i j b.
(Applicative m, Stacked m) =>
m (a -> i) j b -> a -> m i j b
Cont2.@ chunk
s
{-# INLINE chunk #-}
takeRest :: (Tokens tok chunk m) => m (chunk -> r) r chunk
takeRest :: forall tok chunk (m :: * -> * -> * -> *) r.
Tokens tok chunk m =>
m (chunk -> r) r chunk
takeRest = Maybe String -> (tok -> Bool) -> m (chunk -> r) r chunk
forall r. Maybe String -> (tok -> Bool) -> m (chunk -> r) r chunk
forall tok chunk (m :: * -> * -> * -> *) r.
Tokens tok chunk m =>
Maybe String -> (tok -> Bool) -> m (chunk -> r) r chunk
takeWhileP Maybe String
forall a. Maybe a
Nothing (Bool -> tok -> Bool
forall a b. a -> b -> a
const Bool
True)
{-# INLINE takeRest #-}
atEnd :: (Indexed.Alternative m, Tokens tok chunk m) => m r r Bool
atEnd :: forall (m :: * -> * -> * -> *) tok chunk r.
(Alternative m, Tokens tok chunk m) =>
m r r Bool
atEnd = (Bool
True Bool -> m r r () -> m r r Bool
forall a b. a -> m r r b -> m r r a
forall (f :: * -> *) a b. Functor f => a -> f b -> f a
<$ m r r () -> m r r ()
forall r r' a. m r r' a -> m r r' a
forall tok chunk (m :: * -> * -> * -> *) r r' a.
Tokens tok chunk m =>
m r r' a -> m r r' a
hidden m r r ()
forall r. m r r ()
forall tok chunk (m :: * -> * -> * -> *) r.
Tokens tok chunk m =>
m r r ()
eof) m r r Bool -> m r r Bool -> m r r Bool
forall a. Additive a => a -> a -> a
<|> Bool -> m r r Bool
forall a i. a -> m i i a
forall {k} (f :: k -> k -> * -> *) a (i :: k).
Applicative f =>
a -> f i i a
Indexed.pure Bool
False
{-# INLINE atEnd #-}
instance (Tokens tok chunk m1, Tokens tok chunk m2) => Tokens tok chunk (m1 Indexed.:*: m2) where
label :: forall r r' a. String -> (:*:) m1 m2 r r' a -> (:*:) m1 m2 r r' a
label String
s (m1 r r' a
a Indexed.:*: m2 r r' a
b) = String -> m1 r r' a -> m1 r r' a
forall r r' a. String -> m1 r r' a -> m1 r r' a
forall tok chunk (m :: * -> * -> * -> *) r r' a.
Tokens tok chunk m =>
String -> m r r' a -> m r r' a
label String
s m1 r r' a
a m1 r r' a -> m2 r r' a -> (:*:) m1 m2 r r' a
forall {k} {k1} {k2} (f :: k -> k1 -> k2 -> *)
(g :: k -> k1 -> k2 -> *) (i :: k) (j :: k1) (a :: k2).
f i j a -> g i j a -> (:*:) f g i j a
Indexed.:*: String -> m2 r r' a -> m2 r r' a
forall r r' a. String -> m2 r r' a -> m2 r r' a
forall tok chunk (m :: * -> * -> * -> *) r r' a.
Tokens tok chunk m =>
String -> m r r' a -> m r r' a
label String
s m2 r r' a
b
hidden :: forall r r' a. (:*:) m1 m2 r r' a -> (:*:) m1 m2 r r' a
hidden (m1 r r' a
a Indexed.:*: m2 r r' a
b) = m1 r r' a -> m1 r r' a
forall r r' a. m1 r r' a -> m1 r r' a
forall tok chunk (m :: * -> * -> * -> *) r r' a.
Tokens tok chunk m =>
m r r' a -> m r r' a
hidden m1 r r' a
a m1 r r' a -> m2 r r' a -> (:*:) m1 m2 r r' a
forall {k} {k1} {k2} (f :: k -> k1 -> k2 -> *)
(g :: k -> k1 -> k2 -> *) (i :: k) (j :: k1) (a :: k2).
f i j a -> g i j a -> (:*:) f g i j a
Indexed.:*: m2 r r' a -> m2 r r' a
forall r r' a. m2 r r' a -> m2 r r' a
forall tok chunk (m :: * -> * -> * -> *) r r' a.
Tokens tok chunk m =>
m r r' a -> m r r' a
hidden m2 r r' a
b
single :: forall r. tok -> (:*:) m1 m2 r r tok
single tok
t = tok -> m1 r r tok
forall r. tok -> m1 r r tok
forall tok chunk (m :: * -> * -> * -> *) r.
Tokens tok chunk m =>
tok -> m r r tok
single tok
t m1 r r tok -> m2 r r tok -> (:*:) m1 m2 r r tok
forall {k} {k1} {k2} (f :: k -> k1 -> k2 -> *)
(g :: k -> k1 -> k2 -> *) (i :: k) (j :: k1) (a :: k2).
f i j a -> g i j a -> (:*:) f g i j a
Indexed.:*: tok -> m2 r r tok
forall r. tok -> m2 r r tok
forall tok chunk (m :: * -> * -> * -> *) r.
Tokens tok chunk m =>
tok -> m r r tok
single tok
t
satisfy :: forall r. (tok -> Bool) -> (:*:) m1 m2 (tok -> r) r tok
satisfy tok -> Bool
f = (tok -> Bool) -> m1 (tok -> r) r tok
forall r. (tok -> Bool) -> m1 (tok -> r) r tok
forall tok chunk (m :: * -> * -> * -> *) r.
Tokens tok chunk m =>
(tok -> Bool) -> m (tok -> r) r tok
satisfy tok -> Bool
f m1 (tok -> r) r tok
-> m2 (tok -> r) r tok -> (:*:) m1 m2 (tok -> r) r tok
forall {k} {k1} {k2} (f :: k -> k1 -> k2 -> *)
(g :: k -> k1 -> k2 -> *) (i :: k) (j :: k1) (a :: k2).
f i j a -> g i j a -> (:*:) f g i j a
Indexed.:*: (tok -> Bool) -> m2 (tok -> r) r tok
forall r. (tok -> Bool) -> m2 (tok -> r) r tok
forall tok chunk (m :: * -> * -> * -> *) r.
Tokens tok chunk m =>
(tok -> Bool) -> m (tok -> r) r tok
satisfy tok -> Bool
f
eof :: forall r. (:*:) m1 m2 r r ()
eof = m1 r r ()
forall r. m1 r r ()
forall tok chunk (m :: * -> * -> * -> *) r.
Tokens tok chunk m =>
m r r ()
eof m1 r r () -> m2 r r () -> (:*:) m1 m2 r r ()
forall {k} {k1} {k2} (f :: k -> k1 -> k2 -> *)
(g :: k -> k1 -> k2 -> *) (i :: k) (j :: k1) (a :: k2).
f i j a -> g i j a -> (:*:) f g i j a
Indexed.:*: m2 r r ()
forall r. m2 r r ()
forall tok chunk (m :: * -> * -> * -> *) r.
Tokens tok chunk m =>
m r r ()
eof
tokens :: forall r.
(chunk -> chunk -> Bool)
-> chunk -> (:*:) m1 m2 (chunk -> r) r chunk
tokens chunk -> chunk -> Bool
f chunk
s = (chunk -> chunk -> Bool) -> chunk -> m1 (chunk -> r) r chunk
forall r.
(chunk -> chunk -> Bool) -> chunk -> m1 (chunk -> r) r chunk
forall tok chunk (m :: * -> * -> * -> *) r.
Tokens tok chunk m =>
(chunk -> chunk -> Bool) -> chunk -> m (chunk -> r) r chunk
tokens chunk -> chunk -> Bool
f chunk
s m1 (chunk -> r) r chunk
-> m2 (chunk -> r) r chunk -> (:*:) m1 m2 (chunk -> r) r chunk
forall {k} {k1} {k2} (f :: k -> k1 -> k2 -> *)
(g :: k -> k1 -> k2 -> *) (i :: k) (j :: k1) (a :: k2).
f i j a -> g i j a -> (:*:) f g i j a
Indexed.:*: (chunk -> chunk -> Bool) -> chunk -> m2 (chunk -> r) r chunk
forall r.
(chunk -> chunk -> Bool) -> chunk -> m2 (chunk -> r) r chunk
forall tok chunk (m :: * -> * -> * -> *) r.
Tokens tok chunk m =>
(chunk -> chunk -> Bool) -> chunk -> m (chunk -> r) r chunk
tokens chunk -> chunk -> Bool
f chunk
s
takeWhileP :: forall r.
Maybe String -> (tok -> Bool) -> (:*:) m1 m2 (chunk -> r) r chunk
takeWhileP Maybe String
s tok -> Bool
f = Maybe String -> (tok -> Bool) -> m1 (chunk -> r) r chunk
forall r. Maybe String -> (tok -> Bool) -> m1 (chunk -> r) r chunk
forall tok chunk (m :: * -> * -> * -> *) r.
Tokens tok chunk m =>
Maybe String -> (tok -> Bool) -> m (chunk -> r) r chunk
takeWhileP Maybe String
s tok -> Bool
f m1 (chunk -> r) r chunk
-> m2 (chunk -> r) r chunk -> (:*:) m1 m2 (chunk -> r) r chunk
forall {k} {k1} {k2} (f :: k -> k1 -> k2 -> *)
(g :: k -> k1 -> k2 -> *) (i :: k) (j :: k1) (a :: k2).
f i j a -> g i j a -> (:*:) f g i j a
Indexed.:*: Maybe String -> (tok -> Bool) -> m2 (chunk -> r) r chunk
forall r. Maybe String -> (tok -> Bool) -> m2 (chunk -> r) r chunk
forall tok chunk (m :: * -> * -> * -> *) r.
Tokens tok chunk m =>
Maybe String -> (tok -> Bool) -> m (chunk -> r) r chunk
takeWhileP Maybe String
s tok -> Bool
f
takeWhile1P :: forall r.
Maybe String -> (tok -> Bool) -> (:*:) m1 m2 (chunk -> r) r chunk
takeWhile1P Maybe String
s tok -> Bool
f = Maybe String -> (tok -> Bool) -> m1 (chunk -> r) r chunk
forall r. Maybe String -> (tok -> Bool) -> m1 (chunk -> r) r chunk
forall tok chunk (m :: * -> * -> * -> *) r.
Tokens tok chunk m =>
Maybe String -> (tok -> Bool) -> m (chunk -> r) r chunk
takeWhile1P Maybe String
s tok -> Bool
f m1 (chunk -> r) r chunk
-> m2 (chunk -> r) r chunk -> (:*:) m1 m2 (chunk -> r) r chunk
forall {k} {k1} {k2} (f :: k -> k1 -> k2 -> *)
(g :: k -> k1 -> k2 -> *) (i :: k) (j :: k1) (a :: k2).
f i j a -> g i j a -> (:*:) f g i j a
Indexed.:*: Maybe String -> (tok -> Bool) -> m2 (chunk -> r) r chunk
forall r. Maybe String -> (tok -> Bool) -> m2 (chunk -> r) r chunk
forall tok chunk (m :: * -> * -> * -> *) r.
Tokens tok chunk m =>
Maybe String -> (tok -> Bool) -> m (chunk -> r) r chunk
takeWhile1P Maybe String
s tok -> Bool
f
takeP :: forall r. Maybe String -> Int -> (:*:) m1 m2 (chunk -> r) r chunk
takeP Maybe String
s Int
n = Maybe String -> Int -> m1 (chunk -> r) r chunk
forall r. Maybe String -> Int -> m1 (chunk -> r) r chunk
forall tok chunk (m :: * -> * -> * -> *) r.
Tokens tok chunk m =>
Maybe String -> Int -> m (chunk -> r) r chunk
takeP Maybe String
s Int
n m1 (chunk -> r) r chunk
-> m2 (chunk -> r) r chunk -> (:*:) m1 m2 (chunk -> r) r chunk
forall {k} {k1} {k2} (f :: k -> k1 -> k2 -> *)
(g :: k -> k1 -> k2 -> *) (i :: k) (j :: k1) (a :: k2).
f i j a -> g i j a -> (:*:) f g i j a
Indexed.:*: Maybe String -> Int -> m2 (chunk -> r) r chunk
forall r. Maybe String -> Int -> m2 (chunk -> r) r chunk
forall tok chunk (m :: * -> * -> * -> *) r.
Tokens tok chunk m =>
Maybe String -> Int -> m (chunk -> r) r chunk
takeP Maybe String
s Int
n
class Breaks m where
space :: m r r ()
space1 :: m r r ()
hardline :: m r r ()
instance (Breaks m1, Breaks m2) => Breaks (m1 Indexed.:*: m2) where
space :: forall (r :: k). (:*:) m1 m2 r r ()
space = m1 r r ()
forall (r :: k). m1 r r ()
forall {k} (m :: k -> k -> * -> *) (r :: k). Breaks m => m r r ()
space m1 r r () -> m2 r r () -> (:*:) m1 m2 r r ()
forall {k} {k1} {k2} (f :: k -> k1 -> k2 -> *)
(g :: k -> k1 -> k2 -> *) (i :: k) (j :: k1) (a :: k2).
f i j a -> g i j a -> (:*:) f g i j a
Indexed.:*: m2 r r ()
forall (r :: k). m2 r r ()
forall {k} (m :: k -> k -> * -> *) (r :: k). Breaks m => m r r ()
space
space1 :: forall (r :: k). (:*:) m1 m2 r r ()
space1 = m1 r r ()
forall (r :: k). m1 r r ()
forall {k} (m :: k -> k -> * -> *) (r :: k). Breaks m => m r r ()
space1 m1 r r () -> m2 r r () -> (:*:) m1 m2 r r ()
forall {k} {k1} {k2} (f :: k -> k1 -> k2 -> *)
(g :: k -> k1 -> k2 -> *) (i :: k) (j :: k1) (a :: k2).
f i j a -> g i j a -> (:*:) f g i j a
Indexed.:*: m2 r r ()
forall (r :: k). m2 r r ()
forall {k} (m :: k -> k -> * -> *) (r :: k). Breaks m => m r r ()
space1
hardline :: forall (r :: k). (:*:) m1 m2 r r ()
hardline = m1 r r ()
forall (r :: k). m1 r r ()
forall {k} (m :: k -> k -> * -> *) (r :: k). Breaks m => m r r ()
hardline m1 r r () -> m2 r r () -> (:*:) m1 m2 r r ()
forall {k} {k1} {k2} (f :: k -> k1 -> k2 -> *)
(g :: k -> k1 -> k2 -> *) (i :: k) (j :: k1) (a :: k2).
f i j a -> g i j a -> (:*:) f g i j a
Indexed.:*: m2 r r ()
forall (r :: k). m2 r r ()
forall {k} (m :: k -> k -> * -> *) (r :: k). Breaks m => m r r ()
hardline
class (Breaks m) => WadlerLeijen m where
group :: m r r' a -> m r r' a
nest :: Int -> m r r' a -> m r r' a
instance (WadlerLeijen m1, WadlerLeijen m2) => WadlerLeijen (m1 Indexed.:*: m2) where
group :: forall (r :: k) (r' :: k) a.
(:*:) m1 m2 r r' a -> (:*:) m1 m2 r r' a
group (m1 r r' a
a Indexed.:*: m2 r r' a
b) = m1 r r' a -> m1 r r' a
forall (r :: k) (r' :: k) a. m1 r r' a -> m1 r r' a
forall {k} (m :: k -> k -> * -> *) (r :: k) (r' :: k) a.
WadlerLeijen m =>
m r r' a -> m r r' a
group m1 r r' a
a m1 r r' a -> m2 r r' a -> (:*:) m1 m2 r r' a
forall {k} {k1} {k2} (f :: k -> k1 -> k2 -> *)
(g :: k -> k1 -> k2 -> *) (i :: k) (j :: k1) (a :: k2).
f i j a -> g i j a -> (:*:) f g i j a
Indexed.:*: m2 r r' a -> m2 r r' a
forall (r :: k) (r' :: k) a. m2 r r' a -> m2 r r' a
forall {k} (m :: k -> k -> * -> *) (r :: k) (r' :: k) a.
WadlerLeijen m =>
m r r' a -> m r r' a
group m2 r r' a
b
nest :: forall (r :: k) (r' :: k) a.
Int -> (:*:) m1 m2 r r' a -> (:*:) m1 m2 r r' a
nest Int
n (m1 r r' a
a Indexed.:*: m2 r r' a
b) = Int -> m1 r r' a -> m1 r r' a
forall (r :: k) (r' :: k) a. Int -> m1 r r' a -> m1 r r' a
forall {k} (m :: k -> k -> * -> *) (r :: k) (r' :: k) a.
WadlerLeijen m =>
Int -> m r r' a -> m r r' a
nest Int
n m1 r r' a
a m1 r r' a -> m2 r r' a -> (:*:) m1 m2 r r' a
forall {k} {k1} {k2} (f :: k -> k1 -> k2 -> *)
(g :: k -> k1 -> k2 -> *) (i :: k) (j :: k1) (a :: k2).
f i j a -> g i j a -> (:*:) f g i j a
Indexed.:*: Int -> m2 r r' a -> m2 r r' a
forall (r :: k) (r' :: k) a. Int -> m2 r r' a -> m2 r r' a
forall {k} (m :: k -> k -> * -> *) (r :: k) (r' :: k) a.
WadlerLeijen m =>
Int -> m r r' a -> m r r' a
nest Int
n m2 r r' a
b
instance (Breaks m) => WadlerLeijen (Trivial m) where
group :: forall (r :: k) (r' :: k) a. Trivial m r r' a -> Trivial m r r' a
group = Trivial m r r' a -> Trivial m r r' a
forall a. a -> a
id
nest :: forall (r :: k) (r' :: k) a.
Int -> Trivial m r r' a -> Trivial m r r' a
nest Int
_n = Trivial m r r' a -> Trivial m r r' a
forall a. a -> a
id
class LookAhead m where
lookAhead :: m (a -> r) r a -> m (a -> r) r a
notFollowedBy :: m r r a -> m r r ()
instance (LookAhead m1, LookAhead m2) => LookAhead (m1 Indexed.:*: m2) where
lookAhead :: forall a r. (:*:) m1 m2 (a -> r) r a -> (:*:) m1 m2 (a -> r) r a
lookAhead (m1 (a -> r) r a
a Indexed.:*: m2 (a -> r) r a
b) = m1 (a -> r) r a -> m1 (a -> r) r a
forall a r. m1 (a -> r) r a -> m1 (a -> r) r a
forall (m :: * -> * -> * -> *) a r.
LookAhead m =>
m (a -> r) r a -> m (a -> r) r a
lookAhead m1 (a -> r) r a
a m1 (a -> r) r a -> m2 (a -> r) r a -> (:*:) m1 m2 (a -> r) r a
forall {k} {k1} {k2} (f :: k -> k1 -> k2 -> *)
(g :: k -> k1 -> k2 -> *) (i :: k) (j :: k1) (a :: k2).
f i j a -> g i j a -> (:*:) f g i j a
Indexed.:*: m2 (a -> r) r a -> m2 (a -> r) r a
forall a r. m2 (a -> r) r a -> m2 (a -> r) r a
forall (m :: * -> * -> * -> *) a r.
LookAhead m =>
m (a -> r) r a -> m (a -> r) r a
lookAhead m2 (a -> r) r a
b
notFollowedBy :: forall r a. (:*:) m1 m2 r r a -> (:*:) m1 m2 r r ()
notFollowedBy (m1 r r a
a Indexed.:*: m2 r r a
b) = m1 r r a -> m1 r r ()
forall r a. m1 r r a -> m1 r r ()
forall (m :: * -> * -> * -> *) r a.
LookAhead m =>
m r r a -> m r r ()
notFollowedBy m1 r r a
a m1 r r () -> m2 r r () -> (:*:) m1 m2 r r ()
forall {k} {k1} {k2} (f :: k -> k1 -> k2 -> *)
(g :: k -> k1 -> k2 -> *) (i :: k) (j :: k1) (a :: k2).
f i j a -> g i j a -> (:*:) f g i j a
Indexed.:*: m2 r r a -> m2 r r ()
forall r a. m2 r r a -> m2 r r ()
forall (m :: * -> * -> * -> *) r a.
LookAhead m =>
m r r a -> m r r ()
notFollowedBy m2 r r a
b
instance (Indexed.Applicative m, Cont2.Shifty m) => LookAhead (Trivial m) where
lookAhead :: forall a r. Trivial m (a -> r) r a -> Trivial m (a -> r) r a
lookAhead Trivial m (a -> r) r a
_ = Trivial m (a -> r) r a
forall (m :: * -> * -> * -> *) a i.
(Applicative m, Shifty m) =>
m (a -> i) i a
Cont2.pop
notFollowedBy :: forall r a. Trivial m r r a -> Trivial m r r ()
notFollowedBy Trivial m r r a
_ = () -> Trivial m r r ()
forall a i. a -> Trivial m i i a
forall {k} (f :: k -> k -> * -> *) a (i :: k).
Applicative f =>
a -> f i i a
Indexed.pure ()
class Annotations ann m where
annotate :: ann -> m r r' a -> m r r' a
instance (Annotations ann m1, Annotations ann m2) => Annotations ann (m1 Indexed.:*: m2) where
annotate :: forall (r :: k) (r' :: k) (a :: k).
ann -> (:*:) m1 m2 r r' a -> (:*:) m1 m2 r r' a
annotate ann
ann (m1 r r' a
a Indexed.:*: m2 r r' a
b) = ann -> m1 r r' a -> m1 r r' a
forall (r :: k) (r' :: k) (a :: k). ann -> m1 r r' a -> m1 r r' a
forall {k} {k} {k} ann (m :: k -> k -> k -> *) (r :: k) (r' :: k)
(a :: k).
Annotations ann m =>
ann -> m r r' a -> m r r' a
annotate ann
ann m1 r r' a
a m1 r r' a -> m2 r r' a -> (:*:) m1 m2 r r' a
forall {k} {k1} {k2} (f :: k -> k1 -> k2 -> *)
(g :: k -> k1 -> k2 -> *) (i :: k) (j :: k1) (a :: k2).
f i j a -> g i j a -> (:*:) f g i j a
Indexed.:*: ann -> m2 r r' a -> m2 r r' a
forall (r :: k) (r' :: k) (a :: k). ann -> m2 r r' a -> m2 r r' a
forall {k} {k} {k} ann (m :: k -> k -> k -> *) (r :: k) (r' :: k)
(a :: k).
Annotations ann m =>
ann -> m r r' a -> m r r' a
annotate ann
ann m2 r r' a
b
instance Annotations ann (Trivial m) where
annotate :: forall (r :: k) (r' :: k) (a :: k).
ann -> Trivial m r r' a -> Trivial m r r' a
annotate ann
_ = Trivial m r r' a -> Trivial m r r' a
forall a. a -> a
id
class ParseErrors e m where
parseError :: e -> m r r' a
withRecovery ::
(e -> m r r' a) ->
m r r' a ->
m r r' a
observing ::
m (b -> r) r a ->
m ((Either e b) -> r) r (Either e a)
instance (ParseErrors e m1, ParseErrors e m2) => ParseErrors e (m1 Indexed.:*: m2) where
parseError :: forall r r' a. e -> (:*:) m1 m2 r r' a
parseError e
e = e -> m1 r r' a
forall r r' a. e -> m1 r r' a
forall e (m :: * -> * -> * -> *) r r' a.
ParseErrors e m =>
e -> m r r' a
parseError e
e m1 r r' a -> m2 r r' a -> (:*:) m1 m2 r r' a
forall {k} {k1} {k2} (f :: k -> k1 -> k2 -> *)
(g :: k -> k1 -> k2 -> *) (i :: k) (j :: k1) (a :: k2).
f i j a -> g i j a -> (:*:) f g i j a
Indexed.:*: e -> m2 r r' a
forall r r' a. e -> m2 r r' a
forall e (m :: * -> * -> * -> *) r r' a.
ParseErrors e m =>
e -> m r r' a
parseError e
e
withRecovery :: forall r r' a.
(e -> (:*:) m1 m2 r r' a)
-> (:*:) m1 m2 r r' a -> (:*:) m1 m2 r r' a
withRecovery e -> (:*:) m1 m2 r r' a
f (m1 r r' a
a Indexed.:*: m2 r r' a
b) = (e -> m1 r r' a) -> m1 r r' a -> m1 r r' a
forall r r' a. (e -> m1 r r' a) -> m1 r r' a -> m1 r r' a
forall e (m :: * -> * -> * -> *) r r' a.
ParseErrors e m =>
(e -> m r r' a) -> m r r' a -> m r r' a
withRecovery ((:*:) m1 m2 r r' a -> m1 r r' a
forall {k1} {k2} {k3} (f :: k1 -> k2 -> k3 -> *)
(g :: k1 -> k2 -> k3 -> *) (i :: k1) (j :: k2) (a :: k3).
(:*:) f g i j a -> f i j a
Indexed.fst_star ((:*:) m1 m2 r r' a -> m1 r r' a)
-> (e -> (:*:) m1 m2 r r' a) -> e -> m1 r r' a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. e -> (:*:) m1 m2 r r' a
f) m1 r r' a
a m1 r r' a -> m2 r r' a -> (:*:) m1 m2 r r' a
forall {k} {k1} {k2} (f :: k -> k1 -> k2 -> *)
(g :: k -> k1 -> k2 -> *) (i :: k) (j :: k1) (a :: k2).
f i j a -> g i j a -> (:*:) f g i j a
Indexed.:*: (e -> m2 r r' a) -> m2 r r' a -> m2 r r' a
forall r r' a. (e -> m2 r r' a) -> m2 r r' a -> m2 r r' a
forall e (m :: * -> * -> * -> *) r r' a.
ParseErrors e m =>
(e -> m r r' a) -> m r r' a -> m r r' a
withRecovery ((:*:) m1 m2 r r' a -> m2 r r' a
forall {k1} {k2} {k3} (f :: k1 -> k2 -> k3 -> *)
(g :: k1 -> k2 -> k3 -> *) (i :: k1) (j :: k2) (a :: k3).
(:*:) f g i j a -> g i j a
Indexed.snd_star ((:*:) m1 m2 r r' a -> m2 r r' a)
-> (e -> (:*:) m1 m2 r r' a) -> e -> m2 r r' a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. e -> (:*:) m1 m2 r r' a
f) m2 r r' a
b
observing :: forall b r a.
(:*:) m1 m2 (b -> r) r a
-> (:*:) m1 m2 (Either e b -> r) r (Either e a)
observing (m1 (b -> r) r a
a Indexed.:*: m2 (b -> r) r a
b) = m1 (b -> r) r a -> m1 (Either e b -> r) r (Either e a)
forall b r a.
m1 (b -> r) r a -> m1 (Either e b -> r) r (Either e a)
forall e (m :: * -> * -> * -> *) b r a.
ParseErrors e m =>
m (b -> r) r a -> m (Either e b -> r) r (Either e a)
observing m1 (b -> r) r a
a m1 (Either e b -> r) r (Either e a)
-> m2 (Either e b -> r) r (Either e a)
-> (:*:) m1 m2 (Either e b -> r) r (Either e a)
forall {k} {k1} {k2} (f :: k -> k1 -> k2 -> *)
(g :: k -> k1 -> k2 -> *) (i :: k) (j :: k1) (a :: k2).
f i j a -> g i j a -> (:*:) f g i j a
Indexed.:*: m2 (b -> r) r a -> m2 (Either e b -> r) r (Either e a)
forall b r a.
m2 (b -> r) r a -> m2 (Either e b -> r) r (Either e a)
forall e (m :: * -> * -> * -> *) b r a.
ParseErrors e m =>
m (b -> r) r a -> m (Either e b -> r) r (Either e a)
observing m2 (b -> r) r a
b
newtype Trivial m r r' a = MkTrivial (m r r' a)
deriving newtype ((forall a b. (a -> b) -> Trivial m r r' a -> Trivial m r r' b)
-> (forall a b. a -> Trivial m r r' b -> Trivial m r r' a)
-> Functor (Trivial m r r')
forall a b. a -> Trivial m r r' b -> Trivial m r r' a
forall a b. (a -> b) -> Trivial m r r' a -> Trivial m r r' b
forall k k (m :: k -> k -> * -> *) (r :: k) (r' :: k) a b.
Functor (m r r') =>
a -> Trivial m r r' b -> Trivial m r r' a
forall k k (m :: k -> k -> * -> *) (r :: k) (r' :: k) a b.
Functor (m r r') =>
(a -> b) -> Trivial m r r' a -> Trivial m r r' b
forall (f :: * -> *).
(forall a b. (a -> b) -> f a -> f b)
-> (forall a b. a -> f b -> f a) -> Functor f
$cfmap :: forall k k (m :: k -> k -> * -> *) (r :: k) (r' :: k) a b.
Functor (m r r') =>
(a -> b) -> Trivial m r r' a -> Trivial m r r' b
fmap :: forall a b. (a -> b) -> Trivial m r r' a -> Trivial m r r' b
$c<$ :: forall k k (m :: k -> k -> * -> *) (r :: k) (r' :: k) a b.
Functor (m r r') =>
a -> Trivial m r r' b -> Trivial m r r' a
<$ :: forall a b. a -> Trivial m r r' b -> Trivial m r r' a
Functor, Functor (Trivial m r r')
Functor (Trivial m r r') =>
(forall a. a -> Trivial m r r' a)
-> (forall a b.
Trivial m r r' (a -> b) -> Trivial m r r' a -> Trivial m r r' b)
-> (forall a b c.
(a -> b -> c)
-> Trivial m r r' a -> Trivial m r r' b -> Trivial m r r' c)
-> (forall a b.
Trivial m r r' a -> Trivial m r r' b -> Trivial m r r' b)
-> (forall a b.
Trivial m r r' a -> Trivial m r r' b -> Trivial m r r' a)
-> Applicative (Trivial m r r')
forall a. a -> Trivial m r r' a
forall a b.
Trivial m r r' a -> Trivial m r r' b -> Trivial m r r' a
forall a b.
Trivial m r r' a -> Trivial m r r' b -> Trivial m r r' b
forall a b.
Trivial m r r' (a -> b) -> Trivial m r r' a -> Trivial m r r' b
forall a b c.
(a -> b -> c)
-> Trivial m r r' a -> Trivial m r r' b -> Trivial m r r' c
forall k k (m :: k -> k -> * -> *) (r :: k) (r' :: k).
Applicative (m r r') =>
Functor (Trivial m r r')
forall k k (m :: k -> k -> * -> *) (r :: k) (r' :: k) a.
Applicative (m r r') =>
a -> Trivial m r r' a
forall k k (m :: k -> k -> * -> *) (r :: k) (r' :: k) a b.
Applicative (m r r') =>
Trivial m r r' a -> Trivial m r r' b -> Trivial m r r' a
forall k k (m :: k -> k -> * -> *) (r :: k) (r' :: k) a b.
Applicative (m r r') =>
Trivial m r r' a -> Trivial m r r' b -> Trivial m r r' b
forall k k (m :: k -> k -> * -> *) (r :: k) (r' :: k) a b.
Applicative (m r r') =>
Trivial m r r' (a -> b) -> Trivial m r r' a -> Trivial m r r' b
forall k k (m :: k -> k -> * -> *) (r :: k) (r' :: k) a b c.
Applicative (m r r') =>
(a -> b -> c)
-> Trivial m r r' a -> Trivial m r r' b -> Trivial m r r' c
forall (f :: * -> *).
Functor f =>
(forall a. a -> f a)
-> (forall a b. f (a -> b) -> f a -> f b)
-> (forall a b c. (a -> b -> c) -> f a -> f b -> f c)
-> (forall a b. f a -> f b -> f b)
-> (forall a b. f a -> f b -> f a)
-> Applicative f
$cpure :: forall k k (m :: k -> k -> * -> *) (r :: k) (r' :: k) a.
Applicative (m r r') =>
a -> Trivial m r r' a
pure :: forall a. a -> Trivial m r r' a
$c<*> :: forall k k (m :: k -> k -> * -> *) (r :: k) (r' :: k) a b.
Applicative (m r r') =>
Trivial m r r' (a -> b) -> Trivial m r r' a -> Trivial m r r' b
<*> :: forall a b.
Trivial m r r' (a -> b) -> Trivial m r r' a -> Trivial m r r' b
$cliftA2 :: forall k k (m :: k -> k -> * -> *) (r :: k) (r' :: k) a b c.
Applicative (m r r') =>
(a -> b -> c)
-> Trivial m r r' a -> Trivial m r r' b -> Trivial m r r' c
liftA2 :: forall a b c.
(a -> b -> c)
-> Trivial m r r' a -> Trivial m r r' b -> Trivial m r r' c
$c*> :: forall k k (m :: k -> k -> * -> *) (r :: k) (r' :: k) a b.
Applicative (m r r') =>
Trivial m r r' a -> Trivial m r r' b -> Trivial m r r' b
*> :: forall a b.
Trivial m r r' a -> Trivial m r r' b -> Trivial m r r' b
$c<* :: forall k k (m :: k -> k -> * -> *) (r :: k) (r' :: k) a b.
Applicative (m r r') =>
Trivial m r r' a -> Trivial m r r' b -> Trivial m r r' a
<* :: forall a b.
Trivial m r r' a -> Trivial m r r' b -> Trivial m r r' a
Applicative, Applicative (Trivial m r r')
Applicative (Trivial m r r') =>
(forall a b.
Trivial m r r' a -> (a -> Trivial m r r' b) -> Trivial m r r' b)
-> (forall a b.
Trivial m r r' a -> Trivial m r r' b -> Trivial m r r' b)
-> (forall a. a -> Trivial m r r' a)
-> Monad (Trivial m r r')
forall a. a -> Trivial m r r' a
forall a b.
Trivial m r r' a -> Trivial m r r' b -> Trivial m r r' b
forall a b.
Trivial m r r' a -> (a -> Trivial m r r' b) -> Trivial m r r' b
forall k k (m :: k -> k -> * -> *) (r :: k) (r' :: k).
Monad (m r r') =>
Applicative (Trivial m r r')
forall k k (m :: k -> k -> * -> *) (r :: k) (r' :: k) a.
Monad (m r r') =>
a -> Trivial m r r' a
forall k k (m :: k -> k -> * -> *) (r :: k) (r' :: k) a b.
Monad (m r r') =>
Trivial m r r' a -> Trivial m r r' b -> Trivial m r r' b
forall k k (m :: k -> k -> * -> *) (r :: k) (r' :: k) a b.
Monad (m r r') =>
Trivial m r r' a -> (a -> Trivial m r r' b) -> Trivial m r r' b
forall (m :: * -> *).
Applicative m =>
(forall a b. m a -> (a -> m b) -> m b)
-> (forall a b. m a -> m b -> m b)
-> (forall a. a -> m a)
-> Monad m
$c>>= :: forall k k (m :: k -> k -> * -> *) (r :: k) (r' :: k) a b.
Monad (m r r') =>
Trivial m r r' a -> (a -> Trivial m r r' b) -> Trivial m r r' b
>>= :: forall a b.
Trivial m r r' a -> (a -> Trivial m r r' b) -> Trivial m r r' b
$c>> :: forall k k (m :: k -> k -> * -> *) (r :: k) (r' :: k) a b.
Monad (m r r') =>
Trivial m r r' a -> Trivial m r r' b -> Trivial m r r' b
>> :: forall a b.
Trivial m r r' a -> Trivial m r r' b -> Trivial m r r' b
$creturn :: forall k k (m :: k -> k -> * -> *) (r :: k) (r' :: k) a.
Monad (m r r') =>
a -> Trivial m r r' a
return :: forall a. a -> Trivial m r r' a
Monad, Trivial m r r' a
Trivial m r r' a -> Trivial m r r' a -> Trivial m r r' a
Trivial m r r' a
-> (Trivial m r r' a -> Trivial m r r' a -> Trivial m r r' a)
-> Additive (Trivial m r r' a)
forall a. a -> (a -> a -> a) -> Additive a
forall k k k (m :: k -> k -> k -> *) (r :: k) (r' :: k) (a :: k).
Additive (m r r' a) =>
Trivial m r r' a
forall k k k (m :: k -> k -> k -> *) (r :: k) (r' :: k) (a :: k).
Additive (m r r' a) =>
Trivial m r r' a -> Trivial m r r' a -> Trivial m r r' a
$cempty :: forall k k k (m :: k -> k -> k -> *) (r :: k) (r' :: k) (a :: k).
Additive (m r r' a) =>
Trivial m r r' a
empty :: Trivial m r r' a
$c<|> :: forall k k k (m :: k -> k -> k -> *) (r :: k) (r' :: k) (a :: k).
Additive (m r r' a) =>
Trivial m r r' a -> Trivial m r r' a -> Trivial m r r' a
<|> :: Trivial m r r' a -> Trivial m r r' a -> Trivial m r r' a
Additive, (forall (i :: k) (j :: k). Functor (Trivial m i j),
forall (i :: k). Applicative (Trivial m i i)) =>
(forall a (i :: k). a -> Trivial m i i a)
-> (forall (i :: k) (j :: k) a b (k1 :: k).
Trivial m i j (a -> b) -> Trivial m j k1 a -> Trivial m i k1 b)
-> (forall a b c (i :: k) (j :: k) (k1 :: k).
(a -> b -> c)
-> Trivial m i j a -> Trivial m j k1 b -> Trivial m i k1 c)
-> (forall (i :: k) (j :: k) a (k1 :: k) b.
Trivial m i j a -> Trivial m j k1 b -> Trivial m i k1 b)
-> (forall (i :: k) (j :: k) a (k1 :: k) b.
Trivial m i j a -> Trivial m j k1 b -> Trivial m i k1 a)
-> Applicative (Trivial m)
forall (i :: k). Applicative (Trivial m i i)
forall (i :: k) (j :: k). Functor (Trivial m i j)
forall (i :: k) (j :: k) a (k1 :: k) b.
Trivial m i j a -> Trivial m j k1 b -> Trivial m i k1 a
forall (i :: k) (j :: k) a (k1 :: k) b.
Trivial m i j a -> Trivial m j k1 b -> Trivial m i k1 b
forall (i :: k) (j :: k) a b (k1 :: k).
Trivial m i j (a -> b) -> Trivial m j k1 a -> Trivial m i k1 b
forall a (i :: k). a -> Trivial m i i a
forall a b c (i :: k) (j :: k) (k1 :: k).
(a -> b -> c)
-> Trivial m i j a -> Trivial m j k1 b -> Trivial m i k1 c
forall k (m :: k -> k -> * -> *) (i :: k).
Applicative m =>
Applicative (Trivial m i i)
forall k (m :: k -> k -> * -> *) (i :: k) (j :: k).
Applicative m =>
Functor (Trivial m i j)
forall k (m :: k -> k -> * -> *) (i :: k) (j :: k) a (k1 :: k) b.
Applicative m =>
Trivial m i j a -> Trivial m j k1 b -> Trivial m i k1 a
forall k (m :: k -> k -> * -> *) (i :: k) (j :: k) a (k1 :: k) b.
Applicative m =>
Trivial m i j a -> Trivial m j k1 b -> Trivial m i k1 b
forall k (m :: k -> k -> * -> *) (i :: k) (j :: k) a b (k1 :: k).
Applicative m =>
Trivial m i j (a -> b) -> Trivial m j k1 a -> Trivial m i k1 b
forall k (m :: k -> k -> * -> *) a (i :: k).
Applicative m =>
a -> Trivial m i i a
forall k (m :: k -> k -> * -> *) a b c (i :: k) (j :: k) (k1 :: k).
Applicative m =>
(a -> b -> c)
-> Trivial m i j a -> Trivial m j k1 b -> Trivial m i k1 c
forall {k} (f :: k -> k -> * -> *).
(forall (i :: k) (j :: k). Functor (f i j),
forall (i :: k). Applicative (f i i)) =>
(forall a (i :: k). a -> f i i a)
-> (forall (i :: k) (j :: k) a b (k1 :: k).
f i j (a -> b) -> f j k1 a -> f i k1 b)
-> (forall a b c (i :: k) (j :: k) (k1 :: k).
(a -> b -> c) -> f i j a -> f j k1 b -> f i k1 c)
-> (forall (i :: k) (j :: k) a (k1 :: k) b.
f i j a -> f j k1 b -> f i k1 b)
-> (forall (i :: k) (j :: k) a (k1 :: k) b.
f i j a -> f j k1 b -> f i k1 a)
-> Applicative f
$cpure :: forall k (m :: k -> k -> * -> *) a (i :: k).
Applicative m =>
a -> Trivial m i i a
pure :: forall a (i :: k). a -> Trivial m i i a
$c<*> :: forall k (m :: k -> k -> * -> *) (i :: k) (j :: k) a b (k1 :: k).
Applicative m =>
Trivial m i j (a -> b) -> Trivial m j k1 a -> Trivial m i k1 b
<*> :: forall (i :: k) (j :: k) a b (k1 :: k).
Trivial m i j (a -> b) -> Trivial m j k1 a -> Trivial m i k1 b
$cliftA2 :: forall k (m :: k -> k -> * -> *) a b c (i :: k) (j :: k) (k1 :: k).
Applicative m =>
(a -> b -> c)
-> Trivial m i j a -> Trivial m j k1 b -> Trivial m i k1 c
liftA2 :: forall a b c (i :: k) (j :: k) (k1 :: k).
(a -> b -> c)
-> Trivial m i j a -> Trivial m j k1 b -> Trivial m i k1 c
$c*> :: forall k (m :: k -> k -> * -> *) (i :: k) (j :: k) a (k1 :: k) b.
Applicative m =>
Trivial m i j a -> Trivial m j k1 b -> Trivial m i k1 b
*> :: forall (i :: k) (j :: k) a (k1 :: k) b.
Trivial m i j a -> Trivial m j k1 b -> Trivial m i k1 b
$c<* :: forall k (m :: k -> k -> * -> *) (i :: k) (j :: k) a (k1 :: k) b.
Applicative m =>
Trivial m i j a -> Trivial m j k1 b -> Trivial m i k1 a
<* :: forall (i :: k) (j :: k) a (k1 :: k) b.
Trivial m i j a -> Trivial m j k1 b -> Trivial m i k1 a
Indexed.Applicative, Applicative (Trivial m)
(Applicative (Trivial m),
forall (i :: k). Monad (Trivial m i i)) =>
(forall (i :: k) (j :: k) a (k1 :: k) b.
Trivial m i j a -> (a -> Trivial m j k1 b) -> Trivial m i k1 b)
-> Monad (Trivial m)
forall (i :: k). Monad (Trivial m i i)
forall (i :: k) (j :: k) a (k1 :: k) b.
Trivial m i j a -> (a -> Trivial m j k1 b) -> Trivial m i k1 b
forall k (m :: k -> k -> * -> *).
Monad m =>
Applicative (Trivial m)
forall k (m :: k -> k -> * -> *) (i :: k).
Monad m =>
Monad (Trivial m i i)
forall k (m :: k -> k -> * -> *) (i :: k) (j :: k) a (k1 :: k) b.
Monad m =>
Trivial m i j a -> (a -> Trivial m j k1 b) -> Trivial m i k1 b
forall {k} (m :: k -> k -> * -> *).
(Applicative m, forall (i :: k). Monad (m i i)) =>
(forall (i :: k) (j :: k) a (k1 :: k) b.
m i j a -> (a -> m j k1 b) -> m i k1 b)
-> Monad m
$c>>= :: forall k (m :: k -> k -> * -> *) (i :: k) (j :: k) a (k1 :: k) b.
Monad m =>
Trivial m i j a -> (a -> Trivial m j k1 b) -> Trivial m i k1 b
>>= :: forall (i :: k) (j :: k) a (k1 :: k) b.
Trivial m i j a -> (a -> Trivial m j k1 b) -> Trivial m i k1 b
Indexed.Monad, (forall r' r r''.
((r' -> r') -> r -> Trivial m r r'' r'') -> Trivial m r r' ())
-> Stacked (Trivial m)
forall r' r r''.
((r' -> r') -> r -> Trivial m r r'' r'') -> Trivial m r r' ()
forall (m :: * -> * -> * -> *) r' r r''.
Stacked m =>
((r' -> r') -> r -> Trivial m r r'' r'') -> Trivial m r r' ()
forall (m :: * -> * -> * -> *).
(forall r' r r''. ((r' -> r') -> r -> m r r'' r'') -> m r r' ())
-> Stacked m
$cshift_ :: forall (m :: * -> * -> * -> *) r' r r''.
Stacked m =>
((r' -> r') -> r -> Trivial m r r'' r'') -> Trivial m r r' ()
shift_ :: forall r' r r''.
((r' -> r') -> r -> Trivial m r r'' r'') -> Trivial m r r' ()
Cont2.Stacked, Stacked (Trivial m)
Stacked (Trivial m) =>
(forall a r' r k.
((a -> r' -> r') -> r -> Trivial m r k k) -> Trivial m r r' a)
-> Shifty (Trivial m)
forall a r' r k.
((a -> r' -> r') -> r -> Trivial m r k k) -> Trivial m r r' a
forall (m :: * -> * -> * -> *).
Stacked m =>
(forall a r' r k. ((a -> r' -> r') -> r -> m r k k) -> m r r' a)
-> Shifty m
forall (m :: * -> * -> * -> *). Shifty m => Stacked (Trivial m)
forall (m :: * -> * -> * -> *) a r' r k.
Shifty m =>
((a -> r' -> r') -> r -> Trivial m r k k) -> Trivial m r r' a
$cshift :: forall (m :: * -> * -> * -> *) a r' r k.
Shifty m =>
((a -> r' -> r') -> r -> Trivial m r k k) -> Trivial m r r' a
shift :: forall a r' r k.
((a -> r' -> r') -> r -> Trivial m r k k) -> Trivial m r r' a
Cont2.Shifty, (forall (r :: k). Trivial m r r ())
-> (forall (r :: k). Trivial m r r ())
-> (forall (r :: k). Trivial m r r ())
-> Breaks (Trivial m)
forall (r :: k). Trivial m r r ()
forall k (m :: k -> k -> * -> *) (r :: k).
Breaks m =>
Trivial m r r ()
forall {k} (m :: k -> k -> * -> *).
(forall (r :: k). m r r ())
-> (forall (r :: k). m r r ())
-> (forall (r :: k). m r r ())
-> Breaks m
$cspace :: forall k (m :: k -> k -> * -> *) (r :: k).
Breaks m =>
Trivial m r r ()
space :: forall (r :: k). Trivial m r r ()
$cspace1 :: forall k (m :: k -> k -> * -> *) (r :: k).
Breaks m =>
Trivial m r r ()
space1 :: forall (r :: k). Trivial m r r ()
$chardline :: forall k (m :: k -> k -> * -> *) (r :: k).
Breaks m =>
Trivial m r r ()
hardline :: forall (r :: k). Trivial m r r ()
Breaks)