From 9ed1034a2beaf075a9f46973ff833bda8c67fc64 Mon Sep 17 00:00:00 2001 From: John Ky Date: Wed, 6 Nov 2024 21:46:47 +1100 Subject: [PATCH] New runErrorMap function --- core/HaskellWorks/Polysemy/Error.hs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/core/HaskellWorks/Polysemy/Error.hs b/core/HaskellWorks/Polysemy/Error.hs index 100cf13..eac37ce 100644 --- a/core/HaskellWorks/Polysemy/Error.hs +++ b/core/HaskellWorks/Polysemy/Error.hs @@ -2,6 +2,7 @@ module HaskellWorks.Polysemy.Error ( module HaskellWorks.Error, trap, trap_, + runErrorMap, embedRunExceptT, embedThrowExceptT, ) where @@ -30,6 +31,14 @@ trap_ :: forall e a r. () trap_ h = trap (const h) +-- | Run an 'Error' effect and map the error value to a different type. +runErrorMap :: () + => (e -> d) + -> Sem (Error e : r) a + -> Sem r (Either d a) +runErrorMap f = + fmap (first f) . runError + embedRunExceptT :: forall e a r m. () => Member (Embed m) r => ExceptT e m a