@@ -84,27 +84,35 @@ class MonadAsync (t : Type → Type) (m : Type → Type) extends Monad m where
8484 -/
8585 async : m α → m (t α)
8686
87+ @[default_instance]
8788instance [Monad m] [MonadAwait t m] : MonadAwait t (StateT n m) where
8889 await := liftM (m := m) ∘ MonadAwait.await
8990
91+ @[default_instance]
9092instance [Monad m] [MonadAwait t m] : MonadAwait t (ExceptT n m) where
9193 await := liftM (m := m) ∘ MonadAwait.await
9294
95+ @[default_instance]
9396instance [Monad m] [MonadAwait t m] : MonadAwait t (ReaderT n m) where
9497 await := liftM (m := m) ∘ MonadAwait.await
9598
99+ @[default_instance]
96100instance [MonadAwait t m] : MonadAwait t (StateRefT' s n m) where
97101 await := liftM (m := m) ∘ MonadAwait.await
98102
103+ @[default_instance]
99104instance [MonadAwait t m] : MonadAwait t (StateT s m) where
100105 await := liftM (m := m) ∘ MonadAwait.await
101106
107+ @[default_instance]
102108instance [MonadAsync t m] : MonadAsync t (ReaderT n m) where
103109 async p := MonadAsync.async ∘ p
104110
111+ @[default_instance]
105112instance [MonadAsync t m] : MonadAsync t (StateRefT' s n m) where
106113 async p := MonadAsync.async ∘ p
107114
115+ @[default_instance]
108116instance [Functor t] [inst : MonadAsync t m] : MonadAsync t (StateT s m) where
109117 async p := fun s => do
110118 let t ← inst.async (p s)
@@ -125,9 +133,7 @@ protected def pure (x : α) : ETask ε α :=
125133 Task.pure <| .ok x
126134
127135/--
128- Creates a new `ETask` that will run after `x` has finished.
129-
130- If `x`:
136+ Creates a new `ETask` that will run after `x` has finished. If `x`:
131137- errors, return an `ETask` that resolves to the error.
132138- succeeds, return an `ETask` that resolves to `f x`.
133139 -/
@@ -151,22 +157,22 @@ protected def bind (x : ETask ε α) (f : α → ETask ε β) : ETask ε β :=
151157 | .error e => Task.pure <| .error e
152158
153159/--
154- Similar to `bind`, however `f` has access to the `IO ` monad. If `f` throws an error, the returned
160+ Similar to `bind`, however `f` has access to the `EIO ` monad. If `f` throws an error, the returned
155161`ETask` resolves to that error.
156162-/
157163@[inline]
158- protected def bindIO (x : ETask ε α) (f : α → EIO ε (ETask ε β)) : EIO ε (ETask ε β) :=
164+ protected def bindEIO (x : ETask ε α) (f : α → EIO ε (ETask ε β)) : EIO ε (ETask ε β) :=
159165 EIO.bindTask x fun r =>
160166 match r with
161167 | .ok a => f a
162168 | .error e => .error e
163169
164170/--
165- Similar to `bind`, however `f` has access to the `IO ` monad. If `f` throws an error, the returned
171+ Similar to `bind`, however `f` has access to the `EIO ` monad. If `f` throws an error, the returned
166172`ETask` resolves to that error.
167173-/
168174@[inline]
169- protected def mapIO (f : α → EIO ε β) (x : ETask ε α) : BaseIO (ETask ε β) :=
175+ protected def mapEIO (f : α → EIO ε β) (x : ETask ε α) : BaseIO (ETask ε β) :=
170176 EIO.mapTask (t := x) fun r =>
171177 match r with
172178 | .ok a => f a
@@ -622,13 +628,13 @@ Returns the `Async` computation inside an `AsyncTask`, so it can be awaited.
622628def async (self : Async α) : Async (AsyncTask α) :=
623629 EAsync.lift <| self.asTask
624630
625- instance : MonadAwait AsyncTask Async :=
626- inferInstanceAs (MonadAwait AsyncTask (EAsync IO.Error))
627-
628631@[default_instance]
629632instance : MonadAsync AsyncTask Async :=
630633 inferInstanceAs (MonadAsync (ETask IO.Error) (EAsync IO.Error))
631634
635+ instance : MonadAwait AsyncTask Async :=
636+ inferInstanceAs (MonadAwait AsyncTask (EAsync IO.Error))
637+
632638instance : MonadAwait IO.Promise Async :=
633639 inferInstanceAs (MonadAwait IO.Promise (EAsync IO.Error))
634640
0 commit comments