feat(init/category/monad_fail): make m in fail implicit
This commit is contained in:
parent
ace8ef286a
commit
c653292422
1 changed files with 3 additions and 3 deletions
|
|
@ -9,14 +9,14 @@ import init.category.transformers init.data.string.basic
|
|||
universes u v
|
||||
|
||||
class monad_fail (m : Type u → Type v) extends monad m :=
|
||||
(fail : Π {a}, string → m a)
|
||||
(fail {} : Π {a}, string → m a)
|
||||
|
||||
-- deriving monad from monad_fail should happen only as a last resort
|
||||
attribute [instance, priority 1] monad_fail.to_monad
|
||||
|
||||
def match_failed {α : Type u} {m : Type u → Type v} [monad_fail m] : m α :=
|
||||
monad_fail.fail m "match failed"
|
||||
monad_fail.fail "match failed"
|
||||
|
||||
-- TODO(Sebastian): Could take `has_monad_lift_t`, except that the refl instances will make it loop
|
||||
instance monad_fail_lift (m n : Type u → Type v) [has_monad_lift m n] [monad_fail m] [monad_n : monad n] : monad_fail n :=
|
||||
{ fail := λ α s, monad_lift (monad_fail.fail m s : m α), ..monad_n }
|
||||
{ fail := λ α s, monad_lift (monad_fail.fail s : m α), ..monad_n }
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue