-
Notifications
You must be signed in to change notification settings - Fork 0
/
Control-Effect-Implicit-Higher-Free.html
1 lines (1 loc) · 26.4 KB
/
Control-Effect-Implicit-Higher-Free.html
1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Control.Effect.Implicit.Higher.Free</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><link rel="stylesheet" type="text/css" href="quick-jump.css" /><script src="haddock-bundle.min.js" async="async" type="text/javascript"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">implicit-effects-0.1.0: Algebraic Effects in Haskell using Implicit Parameters</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>None</td></tr><tr><th>Language</th><td>Haskell2010</td></tr></table><p class="caption">Control.Effect.Implicit.Higher.Free</p></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><span class="keyword">newtype</span> <a id="t:Nest" class="def">Nest</a> f g a <a href="#t:Nest" class="selflink">#</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:Nest" class="def">Nest</a></td><td class="doc empty"> </td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><ul><li><dfn class="src"><a id="v:unNest" class="def">unNest</a> :: f (g a)</dfn><div class="doc empty"> </div></li></ul></div></td></tr></table></div><div class="subs instances"><details id="i:Nest" open="open"><summary>Instances</summary><table><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Nest:Functor:1"></span> (<a href="file:///nix/store/8vx8m9ygckkir7ny1x7rxnlcgdc577r4-ghc-8.6.5-doc/share/doc/ghc/html/libraries/base-4.12.0.0/Data-Functor.html#t:Functor" title="Data.Functor">Functor</a> f, <a href="file:///nix/store/8vx8m9ygckkir7ny1x7rxnlcgdc577r4-ghc-8.6.5-doc/share/doc/ghc/html/libraries/base-4.12.0.0/Data-Functor.html#t:Functor" title="Data.Functor">Functor</a> g) => <a href="file:///nix/store/8vx8m9ygckkir7ny1x7rxnlcgdc577r4-ghc-8.6.5-doc/share/doc/ghc/html/libraries/base-4.12.0.0/Data-Functor.html#t:Functor" title="Data.Functor">Functor</a> (<a href="Control-Effect-Implicit-Higher-Free.html#t:Nest" title="Control.Effect.Implicit.Higher.Free">Nest</a> f g)</span> <a href="#t:Nest" class="selflink">#</a></td><td class="doc empty"> </td></tr><tr><td colspan="2"><details id="i:id:Nest:Functor:1"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="Control-Effect-Implicit-Higher-Free.html">Control.Effect.Implicit.Higher.Free</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:fmap">fmap</a> :: (a -> b) -> <a href="Control-Effect-Implicit-Higher-Free.html#t:Nest" title="Control.Effect.Implicit.Higher.Free">Nest</a> f g a -> <a href="Control-Effect-Implicit-Higher-Free.html#t:Nest" title="Control.Effect.Implicit.Higher.Free">Nest</a> f g b <a href="#v:fmap" class="selflink">#</a></p><p class="src"><a href="#v:-60--36-">(<$)</a> :: a -> <a href="Control-Effect-Implicit-Higher-Free.html#t:Nest" title="Control.Effect.Implicit.Higher.Free">Nest</a> f g b -> <a href="Control-Effect-Implicit-Higher-Free.html#t:Nest" title="Control.Effect.Implicit.Higher.Free">Nest</a> f g a <a href="#v:-60--36-" class="selflink">#</a></p></div></details></td></tr></table></details></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a id="t:-8728-" class="def">(∘)</a> f g = <a href="Control-Effect-Implicit-Higher-Free.html#t:Nest" title="Control.Effect.Implicit.Higher.Free">Nest</a> f g <a href="#t:-8728-" class="selflink">#</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:CoOpHandler" class="def">CoOpHandler</a> ops (f :: <a href="file:///nix/store/8vx8m9ygckkir7ny1x7rxnlcgdc577r4-ghc-8.6.5-doc/share/doc/ghc/html/libraries/base-4.12.0.0/Data-Kind.html#t:Type" title="Data.Kind">Type</a> -> <a href="file:///nix/store/8vx8m9ygckkir7ny1x7rxnlcgdc577r4-ghc-8.6.5-doc/share/doc/ghc/html/libraries/base-4.12.0.0/Data-Kind.html#t:Type" title="Data.Kind">Type</a>) (eff :: <a href="file:///nix/store/8vx8m9ygckkir7ny1x7rxnlcgdc577r4-ghc-8.6.5-doc/share/doc/ghc/html/libraries/base-4.12.0.0/Data-Kind.html#t:Type" title="Data.Kind">Type</a> -> <a href="file:///nix/store/8vx8m9ygckkir7ny1x7rxnlcgdc577r4-ghc-8.6.5-doc/share/doc/ghc/html/libraries/base-4.12.0.0/Data-Kind.html#t:Type" title="Data.Kind">Type</a>) <a href="#t:CoOpHandler" class="selflink">#</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:CoOpHandler" class="def">CoOpHandler</a></td><td class="doc empty"> </td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><ul><li><dfn class="src"><a id="v:returnHandler" class="def">returnHandler</a> :: <span class="keyword">forall</span> a. a -> eff (f a)</dfn><div class="doc empty"> </div></li><li><dfn class="src"><a id="v:operationHandler" class="def">operationHandler</a> :: <span class="keyword">forall</span> a r. <a href="Control-Effect-Implicit-Higher.html#t:CoOperation" title="Control.Effect.Implicit.Higher">CoOperation</a> ops (eff <a href="Control-Effect-Implicit-Higher-Free.html#t:-8728-" title="Control.Effect.Implicit.Higher.Free">∘</a> f) a -> (a -> eff (f r)) -> eff (f r)</dfn><div class="doc empty"> </div></li><li><dfn class="src"><a id="v:contraLiftHandler" class="def">contraLiftHandler</a> :: <a href="Control-Effect-Implicit-Higher.html#t:ContraFree" title="Control.Effect.Implicit.Higher">ContraFree</a> eff f</dfn><div class="doc empty"> </div></li></ul></div></td></tr></table></div></div><div class="top"><p class="src"><span class="keyword">class</span> (<a href="Control-Effect-Implicit-Higher.html#t:EffCoOp" title="Control.Effect.Implicit.Higher">EffCoOp</a> ops, <a href="Control-Effect-Implicit-Higher.html#t:CoOpFunctor" title="Control.Effect.Implicit.Higher">CoOpFunctor</a> (<a href="Control-Effect-Implicit-Higher.html#t:CoOperation" title="Control.Effect.Implicit.Higher">CoOperation</a> ops), <a href="Control-Effect-Implicit-Higher.html#t:HigherEffFunctor" title="Control.Effect.Implicit.Higher">HigherEffFunctor</a> (<a href="Control-Effect-Implicit-Higher.html#t:Operation" title="Control.Effect.Implicit.Higher">Operation</a> ops)) => <a id="t:FreeOps" class="def">FreeOps</a> ops <span class="keyword">where</span> <a href="#t:FreeOps" class="selflink">#</a></p><div class="subs methods"><p class="caption">Methods</p><p class="src"><a id="v:mkFreeOps" class="def">mkFreeOps</a> :: <span class="keyword">forall</span> eff. <a href="Control-Effect-Implicit-Base.html#t:Effect" title="Control.Effect.Implicit.Base">Effect</a> eff => (<span class="keyword">forall</span> a. <a href="Control-Effect-Implicit-Higher.html#t:CoOperation" title="Control.Effect.Implicit.Higher">CoOperation</a> ops eff a -> eff a) -> <a href="Control-Effect-Implicit-Higher.html#t:Operation" title="Control.Effect.Implicit.Higher">Operation</a> ops eff eff <a href="#v:mkFreeOps" class="selflink">#</a></p></div><div class="subs instances"><details id="i:FreeOps" open="open"><summary>Instances</summary><table><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:FreeOps:FreeOps:1"></span> (<a href="Control-Effect-Implicit-Higher.html#t:HigherEffOps" title="Control.Effect.Implicit.Higher">HigherEffOps</a> ops, <a href="Control-Effect-Implicit-Higher.html#t:HigherEffCoOp" title="Control.Effect.Implicit.Higher">HigherEffCoOp</a> ops, <a href="Control-Effect-Implicit-Higher.html#t:EffCoOp" title="Control.Effect.Implicit.Higher">EffCoOp</a> ops, <a href="file:///nix/store/8vx8m9ygckkir7ny1x7rxnlcgdc577r4-ghc-8.6.5-doc/share/doc/ghc/html/libraries/base-4.12.0.0/Data-Functor.html#t:Functor" title="Data.Functor">Functor</a> (<a href="Control-Effect-Implicit-Freer.html#t:CoOperation" title="Control.Effect.Implicit.Freer">CoOperation</a> ops), <a href="Control-Effect-Implicit-Freer.html#t:FreeOps" title="Control.Effect.Implicit.Freer">FreeOps</a> ops) => <a href="Control-Effect-Implicit-Higher-Free.html#t:FreeOps" title="Control.Effect.Implicit.Higher.Free">FreeOps</a> ops</span> <a href="#t:FreeOps" class="selflink">#</a></td><td class="doc empty"> </td></tr><tr><td colspan="2"><details id="i:ic:FreeOps:FreeOps:1"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="Control-Effect-Implicit-Higher-Free.html">Control.Effect.Implicit.Higher.Free</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:mkFreeOps">mkFreeOps</a> :: <a href="Control-Effect-Implicit-Base.html#t:Effect" title="Control.Effect.Implicit.Base">Effect</a> eff => (<span class="keyword">forall</span> a. <a href="Control-Effect-Implicit-Higher.html#t:CoOperation" title="Control.Effect.Implicit.Higher">CoOperation</a> ops eff a -> eff a) -> <a href="Control-Effect-Implicit-Higher.html#t:Operation" title="Control.Effect.Implicit.Higher">Operation</a> ops eff eff <a href="#v:mkFreeOps" class="selflink">#</a></p></div></details></td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:FreeOps:FreeOps:2"></span> <a href="Control-Effect-Implicit-Higher-Free.html#t:FreeOps" title="Control.Effect.Implicit.Higher.Free">FreeOps</a> (<a href="Control-Effect-Implicit-Higher-Ops-Resource.html#t:ResourceEff" title="Control.Effect.Implicit.Higher.Ops.Resource">ResourceEff</a> t)</span> <a href="#t:FreeOps" class="selflink">#</a></td><td class="doc empty"> </td></tr><tr><td colspan="2"><details id="i:ic:FreeOps:FreeOps:2"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="Control-Effect-Implicit-Higher-Ops-Resource.html">Control.Effect.Implicit.Higher.Ops.Resource</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:mkFreeOps">mkFreeOps</a> :: <a href="Control-Effect-Implicit-Base.html#t:Effect" title="Control.Effect.Implicit.Base">Effect</a> eff => (<span class="keyword">forall</span> a. <a href="Control-Effect-Implicit-Higher.html#t:CoOperation" title="Control.Effect.Implicit.Higher">CoOperation</a> (<a href="Control-Effect-Implicit-Higher-Ops-Resource.html#t:ResourceEff" title="Control.Effect.Implicit.Higher.Ops.Resource">ResourceEff</a> t) eff a -> eff a) -> <a href="Control-Effect-Implicit-Higher.html#t:Operation" title="Control.Effect.Implicit.Higher">Operation</a> (<a href="Control-Effect-Implicit-Higher-Ops-Resource.html#t:ResourceEff" title="Control.Effect.Implicit.Higher.Ops.Resource">ResourceEff</a> t) eff eff <a href="#v:mkFreeOps" class="selflink">#</a></p></div></details></td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:FreeOps:FreeOps:3"></span> <a href="Control-Effect-Implicit-Higher-Free.html#t:FreeOps" title="Control.Effect.Implicit.Higher.Free">FreeOps</a> (<a href="Control-Effect-Implicit-Higher-Ops-Exception.html#t:ExceptionEff" title="Control.Effect.Implicit.Higher.Ops.Exception">ExceptionEff</a> e)</span> <a href="#t:FreeOps" class="selflink">#</a></td><td class="doc empty"> </td></tr><tr><td colspan="2"><details id="i:ic:FreeOps:FreeOps:3"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="Control-Effect-Implicit-Higher-Ops-Exception.html">Control.Effect.Implicit.Higher.Ops.Exception</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:mkFreeOps">mkFreeOps</a> :: <a href="Control-Effect-Implicit-Base.html#t:Effect" title="Control.Effect.Implicit.Base">Effect</a> eff => (<span class="keyword">forall</span> a. <a href="Control-Effect-Implicit-Higher.html#t:CoOperation" title="Control.Effect.Implicit.Higher">CoOperation</a> (<a href="Control-Effect-Implicit-Higher-Ops-Exception.html#t:ExceptionEff" title="Control.Effect.Implicit.Higher.Ops.Exception">ExceptionEff</a> e) eff a -> eff a) -> <a href="Control-Effect-Implicit-Higher.html#t:Operation" title="Control.Effect.Implicit.Higher">Operation</a> (<a href="Control-Effect-Implicit-Higher-Ops-Exception.html#t:ExceptionEff" title="Control.Effect.Implicit.Higher.Ops.Exception">ExceptionEff</a> e) eff eff <a href="#v:mkFreeOps" class="selflink">#</a></p></div></details></td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:FreeOps:FreeOps:4"></span> (<a href="Control-Effect-Implicit-Higher-Free.html#t:FreeOps" title="Control.Effect.Implicit.Higher.Free">FreeOps</a> ops1, <a href="Control-Effect-Implicit-Higher-Free.html#t:FreeOps" title="Control.Effect.Implicit.Higher.Free">FreeOps</a> ops2) => <a href="Control-Effect-Implicit-Higher-Free.html#t:FreeOps" title="Control.Effect.Implicit.Higher.Free">FreeOps</a> (<a href="Control-Effect-Implicit-Base.html#t:Union" title="Control.Effect.Implicit.Base">Union</a> ops1 ops2)</span> <a href="#t:FreeOps" class="selflink">#</a></td><td class="doc empty"> </td></tr><tr><td colspan="2"><details id="i:ic:FreeOps:FreeOps:4"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="Control-Effect-Implicit-Higher-Union.html">Control.Effect.Implicit.Higher.Union</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:mkFreeOps">mkFreeOps</a> :: <a href="Control-Effect-Implicit-Base.html#t:Effect" title="Control.Effect.Implicit.Base">Effect</a> eff => (<span class="keyword">forall</span> a. <a href="Control-Effect-Implicit-Higher.html#t:CoOperation" title="Control.Effect.Implicit.Higher">CoOperation</a> (<a href="Control-Effect-Implicit-Base.html#t:Union" title="Control.Effect.Implicit.Base">Union</a> ops1 ops2) eff a -> eff a) -> <a href="Control-Effect-Implicit-Higher.html#t:Operation" title="Control.Effect.Implicit.Higher">Operation</a> (<a href="Control-Effect-Implicit-Base.html#t:Union" title="Control.Effect.Implicit.Base">Union</a> ops1 ops2) eff eff <a href="#v:mkFreeOps" class="selflink">#</a></p></div></details></td></tr></table></details></div></div><div class="top"><p class="src"><span class="keyword">class</span> (<span class="keyword">forall</span> ops eff. (<a href="Control-Effect-Implicit-Higher-Free.html#t:FreeOps" title="Control.Effect.Implicit.Higher.Free">FreeOps</a> ops, <a href="Control-Effect-Implicit-Base.html#t:Effect" title="Control.Effect.Implicit.Base">Effect</a> eff) => <a href="Control-Effect-Implicit-Base.html#t:Effect" title="Control.Effect.Implicit.Base">Effect</a> (free ops eff)) => <a id="t:FreeEff" class="def">FreeEff</a> free <span class="keyword">where</span> <a href="#t:FreeEff" class="selflink">#</a></p><div class="subs methods"><p class="caption">Methods</p><p class="src"><a id="v:freeOps" class="def">freeOps</a> :: <span class="keyword">forall</span> ops eff. (<a href="Control-Effect-Implicit-Higher-Free.html#t:FreeOps" title="Control.Effect.Implicit.Higher.Free">FreeOps</a> ops, <a href="Control-Effect-Implicit-Base.html#t:Effect" title="Control.Effect.Implicit.Base">Effect</a> eff) => <a href="Control-Effect-Implicit-Higher.html#t:Operation" title="Control.Effect.Implicit.Higher">Operation</a> ops (free ops eff) (free ops eff) <a href="#v:freeOps" class="selflink">#</a></p><p class="src"><a id="v:liftFree" class="def">liftFree</a> :: <span class="keyword">forall</span> ops eff a. (<a href="Control-Effect-Implicit-Higher-Free.html#t:FreeOps" title="Control.Effect.Implicit.Higher.Free">FreeOps</a> ops, <a href="Control-Effect-Implicit-Base.html#t:Effect" title="Control.Effect.Implicit.Base">Effect</a> eff) => eff a -> free ops eff a <a href="#v:liftFree" class="selflink">#</a></p><p class="src"><a id="v:freeContraLift" class="def">freeContraLift</a> :: <span class="keyword">forall</span> eff ops. (<a href="Control-Effect-Implicit-Base.html#t:Effect" title="Control.Effect.Implicit.Base">Effect</a> eff, <a href="Control-Effect-Implicit-Higher-Free.html#t:FreeOps" title="Control.Effect.Implicit.Higher.Free">FreeOps</a> ops) => <a href="Control-Effect-Implicit-Higher.html#t:ContraLift" title="Control.Effect.Implicit.Higher">ContraLift</a> eff (free ops eff) <a href="#v:freeContraLift" class="selflink">#</a></p></div><div class="subs instances"><details id="i:FreeEff" open="open"><summary>Instances</summary><table><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:FreeEff:FreeEff:1"></span> <a href="Control-Effect-Implicit-Higher-Free.html#t:FreeEff" title="Control.Effect.Implicit.Higher.Free">FreeEff</a> <a href="Control-Effect-Implicit-Higher-Monad-Church.html#t:ChurchMonad" title="Control.Effect.Implicit.Higher.Monad.Church">ChurchMonad</a></span> <a href="#t:FreeEff" class="selflink">#</a></td><td class="doc empty"> </td></tr><tr><td colspan="2"><details id="i:ic:FreeEff:FreeEff:1"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="Control-Effect-Implicit-Higher-Monad-Church.html">Control.Effect.Implicit.Higher.Monad.Church</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:freeOps">freeOps</a> :: (<a href="Control-Effect-Implicit-Higher-Free.html#t:FreeOps" title="Control.Effect.Implicit.Higher.Free">FreeOps</a> ops, <a href="Control-Effect-Implicit-Base.html#t:Effect" title="Control.Effect.Implicit.Base">Effect</a> eff) => <a href="Control-Effect-Implicit-Higher.html#t:Operation" title="Control.Effect.Implicit.Higher">Operation</a> ops (<a href="Control-Effect-Implicit-Higher-Monad-Church.html#t:ChurchMonad" title="Control.Effect.Implicit.Higher.Monad.Church">ChurchMonad</a> ops eff) (<a href="Control-Effect-Implicit-Higher-Monad-Church.html#t:ChurchMonad" title="Control.Effect.Implicit.Higher.Monad.Church">ChurchMonad</a> ops eff) <a href="#v:freeOps" class="selflink">#</a></p><p class="src"><a href="#v:liftFree">liftFree</a> :: (<a href="Control-Effect-Implicit-Higher-Free.html#t:FreeOps" title="Control.Effect.Implicit.Higher.Free">FreeOps</a> ops, <a href="Control-Effect-Implicit-Base.html#t:Effect" title="Control.Effect.Implicit.Base">Effect</a> eff) => eff a -> <a href="Control-Effect-Implicit-Higher-Monad-Church.html#t:ChurchMonad" title="Control.Effect.Implicit.Higher.Monad.Church">ChurchMonad</a> ops eff a <a href="#v:liftFree" class="selflink">#</a></p><p class="src"><a href="#v:freeContraLift">freeContraLift</a> :: (<a href="Control-Effect-Implicit-Base.html#t:Effect" title="Control.Effect.Implicit.Base">Effect</a> eff, <a href="Control-Effect-Implicit-Higher-Free.html#t:FreeOps" title="Control.Effect.Implicit.Higher.Free">FreeOps</a> ops) => <a href="Control-Effect-Implicit-Higher.html#t:ContraLift" title="Control.Effect.Implicit.Higher">ContraLift</a> eff (<a href="Control-Effect-Implicit-Higher-Monad-Church.html#t:ChurchMonad" title="Control.Effect.Implicit.Higher.Monad.Church">ChurchMonad</a> ops eff) <a href="#v:freeContraLift" class="selflink">#</a></p></div></details></td></tr></table></details></div></div><div class="top"><p class="src"><span class="keyword">class</span> <a href="Control-Effect-Implicit-Higher-Free.html#t:FreeEff" title="Control.Effect.Implicit.Higher.Free">FreeEff</a> free => <a id="t:FreeHandler" class="def">FreeHandler</a> free <span class="keyword">where</span> <a href="#t:FreeHandler" class="selflink">#</a></p><div class="subs methods"><p class="caption">Methods</p><p class="src"><a id="v:handleFree" class="def">handleFree</a> :: <span class="keyword">forall</span> ops eff f a. (<a href="Control-Effect-Implicit-Base.html#t:Effect" title="Control.Effect.Implicit.Base">Effect</a> eff, <a href="Control-Effect-Implicit-Higher-Free.html#t:FreeOps" title="Control.Effect.Implicit.Higher.Free">FreeOps</a> ops, <a href="file:///nix/store/8vx8m9ygckkir7ny1x7rxnlcgdc577r4-ghc-8.6.5-doc/share/doc/ghc/html/libraries/base-4.12.0.0/Data-Functor.html#t:Functor" title="Data.Functor">Functor</a> f) => <a href="Control-Effect-Implicit-Higher-Free.html#t:CoOpHandler" title="Control.Effect.Implicit.Higher.Free">CoOpHandler</a> ops f eff -> free ops eff a -> eff (f a) <a href="#v:handleFree" class="selflink">#</a></p></div><div class="subs instances"><details id="i:FreeHandler" open="open"><summary>Instances</summary><table><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:FreeHandler:FreeHandler:1"></span> <a href="Control-Effect-Implicit-Higher-Free.html#t:FreeHandler" title="Control.Effect.Implicit.Higher.Free">FreeHandler</a> <a href="Control-Effect-Implicit-Higher-Monad-Church.html#t:ChurchMonad" title="Control.Effect.Implicit.Higher.Monad.Church">ChurchMonad</a></span> <a href="#t:FreeHandler" class="selflink">#</a></td><td class="doc empty"> </td></tr><tr><td colspan="2"><details id="i:ic:FreeHandler:FreeHandler:1"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="Control-Effect-Implicit-Higher-Monad-Church.html">Control.Effect.Implicit.Higher.Monad.Church</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:handleFree">handleFree</a> :: (<a href="Control-Effect-Implicit-Base.html#t:Effect" title="Control.Effect.Implicit.Base">Effect</a> eff, <a href="Control-Effect-Implicit-Higher-Free.html#t:FreeOps" title="Control.Effect.Implicit.Higher.Free">FreeOps</a> ops, <a href="file:///nix/store/8vx8m9ygckkir7ny1x7rxnlcgdc577r4-ghc-8.6.5-doc/share/doc/ghc/html/libraries/base-4.12.0.0/Data-Functor.html#t:Functor" title="Data.Functor">Functor</a> f) => <a href="Control-Effect-Implicit-Higher-Free.html#t:CoOpHandler" title="Control.Effect.Implicit.Higher.Free">CoOpHandler</a> ops f eff -> <a href="Control-Effect-Implicit-Higher-Monad-Church.html#t:ChurchMonad" title="Control.Effect.Implicit.Higher.Monad.Church">ChurchMonad</a> ops eff a -> eff (f a) <a href="#v:handleFree" class="selflink">#</a></p></div></details></td></tr></table></details></div></div><div class="top"><p class="src"><a id="v:freeHigherLiftEff" class="def">freeHigherLiftEff</a> :: <span class="keyword">forall</span> free ops eff. (<a href="Control-Effect-Implicit-Higher-Free.html#t:FreeEff" title="Control.Effect.Implicit.Higher.Free">FreeEff</a> free, <a href="Control-Effect-Implicit-Higher-Free.html#t:FreeOps" title="Control.Effect.Implicit.Higher.Free">FreeOps</a> ops, <a href="Control-Effect-Implicit-Base.html#t:Effect" title="Control.Effect.Implicit.Base">Effect</a> eff) => <a href="Control-Effect-Implicit-Higher.html#t:HigherLiftEff" title="Control.Effect.Implicit.Higher">HigherLiftEff</a> eff (free ops eff) <a href="#v:freeHigherLiftEff" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:withCoOpHandler" class="def">withCoOpHandler</a> :: <span class="keyword">forall</span> free ops eff f r. (<a href="file:///nix/store/8vx8m9ygckkir7ny1x7rxnlcgdc577r4-ghc-8.6.5-doc/share/doc/ghc/html/libraries/base-4.12.0.0/Data-Functor.html#t:Functor" title="Data.Functor">Functor</a> f, <a href="Control-Effect-Implicit-Base.html#t:Effect" title="Control.Effect.Implicit.Base">Effect</a> eff, <a href="Control-Effect-Implicit-Higher-Free.html#t:FreeEff" title="Control.Effect.Implicit.Higher.Free">FreeEff</a> free, <a href="Control-Effect-Implicit-Higher-Free.html#t:FreeHandler" title="Control.Effect.Implicit.Higher.Free">FreeHandler</a> free, <a href="Control-Effect-Implicit-Higher.html#t:EffOps" title="Control.Effect.Implicit.Higher">EffOps</a> ops, <a href="Control-Effect-Implicit-Higher-Free.html#t:FreeOps" title="Control.Effect.Implicit.Higher.Free">FreeOps</a> ops, <a href="Control-Effect-Implicit-Base.html#t:ImplicitOps" title="Control.Effect.Implicit.Base">ImplicitOps</a> ops, <a href="Control-Effect-Implicit-Higher.html#t:LowerEffOps" title="Control.Effect.Implicit.Higher">LowerEffOps</a> ops) => <a href="Control-Effect-Implicit-Higher-Free.html#t:CoOpHandler" title="Control.Effect.Implicit.Higher.Free">CoOpHandler</a> ops f eff -> (<a href="Control-Effect-Implicit-Base.html#t:OpsConstraint" title="Control.Effect.Implicit.Base">OpsConstraint</a> ops (free ops eff) => free ops eff r) -> eff (f r) <a href="#v:withCoOpHandler" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:liftCoOpHandler" class="def">liftCoOpHandler</a> :: <span class="keyword">forall</span> ops eff f. (<a href="Control-Effect-Implicit-Base.html#t:Effect" title="Control.Effect.Implicit.Base">Effect</a> eff, <a href="Control-Effect-Implicit-Higher.html#t:HigherEffOps" title="Control.Effect.Implicit.Higher">HigherEffOps</a> ops, <a href="Control-Effect-Implicit-Higher.html#t:HigherEffCoOp" title="Control.Effect.Implicit.Higher">HigherEffCoOp</a> ops) => (<span class="keyword">forall</span> a. <a href="Control-Effect-Implicit-Freer.html#t:CoOpHandler" title="Control.Effect.Implicit.Freer">CoOpHandler</a> ops a (f a) eff) -> <a href="Control-Effect-Implicit-Higher.html#t:ContraFree" title="Control.Effect.Implicit.Higher">ContraFree</a> eff f -> <a href="Control-Effect-Implicit-Higher-Free.html#t:CoOpHandler" title="Control.Effect.Implicit.Higher.Free">CoOpHandler</a> ops f eff <a href="#v:liftCoOpHandler" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:lowerCoOpHandler" class="def">lowerCoOpHandler</a> :: <span class="keyword">forall</span> ops eff f. (<a href="Control-Effect-Implicit-Base.html#t:Effect" title="Control.Effect.Implicit.Base">Effect</a> eff, <a href="Control-Effect-Implicit-Higher.html#t:HigherEffOps" title="Control.Effect.Implicit.Higher">HigherEffOps</a> ops, <a href="Control-Effect-Implicit-Higher.html#t:HigherEffCoOp" title="Control.Effect.Implicit.Higher">HigherEffCoOp</a> ops) => <a href="Control-Effect-Implicit-Higher-Free.html#t:CoOpHandler" title="Control.Effect.Implicit.Higher.Free">CoOpHandler</a> ops f eff -> <span class="keyword">forall</span> a. <a href="Control-Effect-Implicit-Freer.html#t:CoOpHandler" title="Control.Effect.Implicit.Freer">CoOpHandler</a> ops a (f a) eff <a href="#v:lowerCoOpHandler" class="selflink">#</a></p></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.22.0</p></div></body></html>