A software engineer website

Polysemy: Changing return

Gautier DI FOLCO February 26, 2023 [Haskell] #haskell #polysemy #design #effects systems

Polysemy provides some interpreters changing the returned value:

runWriter :: Monoid o => Sem (Writer o ': r) a -> Sem r (o, a)

The easiest way to acheive that is to use State:

runWriter
    :: Monoid o
    => Sem (Writer o ': r) a
    -> Sem r (o, a)
runWriter = runState mempty . reinterpretH intr