However, this must not have type checked since handle requires term of type (a -> Eff effs r) before term of type (forall effs' b. eff :< effs' => eff (Eff effs') b -> Handle eff effs a r effs' b) (which is liftH . f). Therefore I checked definition of interpret in codebase and it was interpret f = handle pure (liftH . f). I think it would be better to remedy this.
Definition of
interpret
is given as following in the 'Simple effect handlers' section:However, this must not have type checked since
handle
requires term of type(a -> Eff effs r)
before term of type(forall effs' b. eff :< effs' => eff (Eff effs') b -> Handle eff effs a r effs' b)
(which isliftH . f
). Therefore I checked definition ofinterpret
in codebase and it wasinterpret f = handle pure (liftH . f)
. I think it would be better to remedy this.