module Text.Regex.Do.Type.Internal where


class Hint hint where
    unhint::hint a -> a
    hint::a -> hint a



instance Hint Test where
    unhint :: Test a -> a
unhint (Test a0 :: a
a0) = a
a0
    hint :: a -> Test a
hint = a -> Test a
forall a. a -> Test a
Test


newtype Test a = Test a     -- ^ test: does body match pattern?



-- | Haystack
data Body b = Body b deriving (a -> Body b -> Body a
(a -> b) -> Body a -> Body b
(forall a b. (a -> b) -> Body a -> Body b)
-> (forall a b. a -> Body b -> Body a) -> Functor Body
forall a b. a -> Body b -> Body a
forall a b. (a -> b) -> Body a -> Body b
forall (f :: * -> *).
(forall a b. (a -> b) -> f a -> f b)
-> (forall a b. a -> f b -> f a) -> Functor f
<$ :: a -> Body b -> Body a
$c<$ :: forall a b. a -> Body b -> Body a
fmap :: (a -> b) -> Body a -> Body b
$cfmap :: forall a b. (a -> b) -> Body a -> Body b
Functor)                -- Bs, String
instance Applicative Body where
    pure :: a -> Body a
pure p0 :: a
p0 = a -> Body a
forall a. a -> Body a
Body a
p0
    <*> :: Body (a -> b) -> Body a -> Body b
(<*>) (Body f0 :: a -> b
f0) (Body a0 :: a
a0) = b -> Body b
forall a. a -> Body a
Body (b -> Body b) -> b -> Body b
forall a b. (a -> b) -> a -> b
$ a -> b
f0 a
a0