Skip to content

Instantly share code, notes, and snippets.

@isovector
Created May 27, 2019 14:14
Show Gist options
  • Select an option

  • Save isovector/040d54e473a3ead0cd406394d2f8547b to your computer and use it in GitHub Desktop.

Select an option

Save isovector/040d54e473a3ead0cd406394d2f8547b to your computer and use it in GitHub Desktop.
inspection-testing
LHS:
recursive
:: forall (e :: (* -> *) -> * -> *) s (r :: [(* -> *)
-> * -> *]) a.
(forall x (m :: * -> *). e m x -> StateT s (Sem r) x)
-> s -> Sem (e : r) a -> Sem r (s, a)
recursive = recursive
recursive_s9LZ
:: forall (e :: (* -> *) -> * -> *) s (r :: [(* -> *)
-> * -> *]) a.
(forall x (m :: * -> *). e m x -> StateT s (Sem r) x)
-> s
-> Sem (e : r) a
-> forall (m :: * -> *).
Monad m =>
(forall x. Union r (Sem r) x -> m x) -> m (s, a)
recursive_s9LZ
= \ (@ (e :: (* -> *) -> * -> *))
(@ s)
(@ (r :: [(* -> *) -> * -> *]))
(@ a)
(f :: forall x (m :: * -> *). e m x -> StateT s (Sem r) x)
(s :: s)
(ds_d9mO :: Sem (e : r) a)
(@ (m :: * -> *))
($dMonad_a7S2 :: Monad m) ->
let {
$dMonad_samK :: Monad (StateT s m)
$dMonad_samK = $fMonadStateT @ m @ s $dMonad_a7S2 } in
let {
$dApplicative_samJ :: Applicative m
$dApplicative_samJ = $p1Monad @ m $dMonad_a7S2 } in
let {
$dFunctor_samI :: Functor m
$dFunctor_samI = $p1Applicative @ m $dApplicative_samJ } in
\ (k :: forall x. Union r (Sem r) x -> m x) ->
fmap
@ m
$dFunctor_samI
@ (a, s)
@ (s, a)
(swap @ a @ s)
((((ds_d9mO `cast` <Co:13>)
@ (StateT s m)
$dMonad_samK
(\ (@ x) (u :: Union (e : r) (Sem (e : r)) x) ->
case u of { Union @ n_i9l5 p a1 ->
case p of {
SZ co ->
case a1 `cast` <Co:48> of
{ Yo @ f @ m1 @ a1 $dFunctor_sayJ e z ds_sayM y ->
let {
lvl_sani :: (a1, s) -> (x, s)
lvl_sani
= \ (w_savE :: (a1, s)) ->
(y (<$
@ f
$dFunctor_sayJ
@ a1
@ ()
(case w_savE of { (a1, s') -> a1 })
z),
case w_savE of { (a1, s') -> s' }) } in
let {
m1 :: StateT s (Sem r) a1
m1 = f @ a1 @ m1 e } in
(\ (s1 :: s) ->
fmap
@ m
$dFunctor_samI
@ (a1, s)
@ (x, s)
lvl_sani
((((m1 `cast` <Co:5>) s1) `cast` <Co:5>) @ m $dMonad_a7S2 k))
`cast` <Co:5>
};
SS @ n1_i9lz co n2 ->
case a1 `cast` <Co:49> of
{ Yo @ f1_sayQ @ m1_sayR @ a1_sayS $dFunctor3 e1 s2 nt f2 ->
(\ (s' :: s) ->
k @ (x, s)
(Union
@ r
@ (Sem r)
@ (x, s)
@ n1
n2
(Yo
@ (IndexOf r n1)
@ (Sem r)
@ (x, s)
@ (Compose ((,) s) f1)
@ m1
@ a1
($fFunctorCompose
@ ((,) s) @ f1 ($fFunctor(,) @ s) $dFunctor3)
e1
((s', s2) `cast` <Co:10>)
(\ (@ x) (x1 :: Compose ((,) s) f1 (m1 x)) ->
let {
p :: (s, Sem (e : r) (f1 x))
p = case x1 `cast` <Co:10> of { (x, y) ->
(x, nt @ x y)
} } in
let {
ds_samQ :: s
ds_samQ = case p of { (x, ds) -> x } } in
let {
ds_samP :: Sem (e : r) (f1 x)
ds_samP = case p of { (ds, y) -> y } } in
(\ (@ (m :: * -> *))
($dMonad :: Monad m)
(eta_B1 :: forall x. Union r (Sem r) x -> m x) ->
fmap
@ m
($p1Applicative @ m ($p1Monad @ m $dMonad))
@ (s, f1 x)
@ (Compose ((,) s) f1 x)
((poly_f4_san7 @ x @ f1 @ s) `cast` <Co:15>)
(((recursive
@ e @ s @ r @ (f1 x) f ds_samQ ds_samP)
`cast` <Co:6>)
@ m $dMonad eta_B1))
`cast` <Co:12>)
(\ (x :: Compose ((,) s) f1 a1) ->
case x `cast` <Co:9> of { (x, y) -> (f2 y, x) }))))
`cast` <Co:5>
}
}
}))
`cast` <Co:4>)
s)
recursive
:: forall (e :: (* -> *) -> * -> *) s (r :: [(* -> *)
-> * -> *]) a.
(forall x (m :: * -> *). e m x -> StateT s (Sem r) x)
-> s -> Sem (e : r) a -> Sem r (s, a)
recursive = recursive_s9LZ `cast` <Co:62>
RHS:
mutual
:: forall (e :: (* -> *) -> * -> *) s (r :: [(* -> *)
-> * -> *]) a.
(forall x (m :: * -> *). e m x -> StateT s (Sem r) x)
-> s -> Sem (e : r) a -> Sem r (s, a)
mutual = mutual_s9Mk `cast` <Co:62>
mutual2
:: forall (e :: (* -> *) -> * -> *) s (r :: [(* -> *)
-> * -> *]) a.
(forall x (m :: * -> *). e m x -> StateT s (Sem r) x)
-> s -> Sem (e : r) a -> Sem r (s, a)
mutual2 = mutual
mutual_s9Mk
:: forall (e :: (* -> *) -> * -> *) s (r :: [(* -> *)
-> * -> *]) a.
(forall x (m :: * -> *). e m x -> StateT s (Sem r) x)
-> s
-> Sem (e : r) a
-> forall (m :: * -> *).
Monad m =>
(forall x. Union r (Sem r) x -> m x) -> m (s, a)
mutual_s9Mk
= \ (@ (e :: (* -> *) -> * -> *))
(@ s)
(@ (r :: [(* -> *) -> * -> *]))
(@ a)
(f :: forall x (m :: * -> *). e m x -> StateT s (Sem r) x)
(s :: s)
(ds_d9kz :: Sem (e : r) a)
(@ (m :: * -> *))
($dMonad_a7Oo :: Monad m) ->
let {
$dMonad_samu :: Monad (StateT s m)
$dMonad_samu = $fMonadStateT @ m @ s $dMonad_a7Oo } in
let {
$dApplicative_samt :: Applicative m
$dApplicative_samt = $p1Monad @ m $dMonad_a7Oo } in
let {
$dFunctor_sams :: Functor m
$dFunctor_sams = $p1Applicative @ m $dApplicative_samt } in
\ (k :: forall x. Union r (Sem r) x -> m x) ->
fmap
@ m
$dFunctor_sams
@ (a, s)
@ (s, a)
(swap @ a @ s)
((((ds_d9kz `cast` <Co:13>)
@ (StateT s m)
$dMonad_samu
(\ (@ x) (u :: Union (e : r) (Sem (e : r)) x) ->
case u of { Union @ n_i9l5 p a1 ->
case p of {
SZ co ->
case a1 `cast` <Co:48> of
{ Yo @ f @ m1 @ a1 $dFunctor_saz3 e z ds_saz6 y ->
let {
lvl_sanF :: (a1, s) -> (x, s)
lvl_sanF
= \ (w_sawd :: (a1, s)) ->
(y (<$
@ f
$dFunctor_saz3
@ a1
@ ()
(case w_sawd of { (a1, s') -> a1 })
z),
case w_sawd of { (a1, s') -> s' }) } in
let {
m1 :: StateT s (Sem r) a1
m1 = f @ a1 @ m1 e } in
(\ (s1 :: s) ->
fmap
@ m
$dFunctor_sams
@ (a1, s)
@ (x, s)
lvl_sanF
((((m1 `cast` <Co:5>) s1) `cast` <Co:5>) @ m $dMonad_a7Oo k))
`cast` <Co:5>
};
SS @ n1_i9lz co n2 ->
case a1 `cast` <Co:49> of
{ Yo @ f1_saza @ m1_sazb @ a1_sazc $dFunctor3 e1 s2 nt f2 ->
(\ (s' :: s) ->
k @ (x, s)
(Union
@ r
@ (Sem r)
@ (x, s)
@ n1
n2
(Yo
@ (IndexOf r n1)
@ (Sem r)
@ (x, s)
@ (Compose ((,) s) f1)
@ m1
@ a1
($fFunctorCompose
@ ((,) s) @ f1 ($fFunctor(,) @ s) $dFunctor3)
e1
((s', s2) `cast` <Co:10>)
(\ (@ x) (x1 :: Compose ((,) s) f1 (m1 x)) ->
let {
p :: (s, Sem (e : r) (f1 x))
p = case x1 `cast` <Co:10> of { (x, y) ->
(x, nt @ x y)
} } in
let {
ds_samA :: s
ds_samA = case p of { (x, ds) -> x } } in
let {
ds_samz :: Sem (e : r) (f1 x)
ds_samz = case p of { (ds, y) -> y } } in
(\ (@ (m :: * -> *))
($dMonad :: Monad m)
(eta_B1 :: forall x. Union r (Sem r) x -> m x) ->
fmap
@ m
($p1Applicative @ m ($p1Monad @ m $dMonad))
@ (s, f1 x)
@ (Compose ((,) s) f1 x)
((poly_f4_san7 @ x @ f1 @ s) `cast` <Co:15>)
(((mutual2 @ e @ s @ r @ (f1 x) f ds_samA ds_samz)
`cast` <Co:6>)
@ m $dMonad eta_B1))
`cast` <Co:12>)
(\ (x :: Compose ((,) s) f1 a1) ->
case x `cast` <Co:9> of { (x, y) -> (f2 y, x) }))))
`cast` <Co:5>
}
}
}))
`cast` <Co:4>)
s)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment