git.iko.soy/effects-benchmarks
on master help sign in
effects-benchmarks/instances/Poly/StatefulExcept.hs
8 lines 272 B history raw
1module Poly.StatefulExcept where
3import Polysemy
4import Polysemy.Error
5import Polysemy.State
7countDownExc :: (Member (State Int) r, Member (Error String) r) => Sem r a
8countDownExc = get @Int >>= (\n -> if n <= 0 then throw "what" else put @Int (n - 1) *> countDownExc)