add eitherToErrors (#35)
authorRoss Paterson <ross@soi.city.ac.uk>
Sun, 5 Feb 2017 23:52:47 +0000 (23:52 +0000)
committerRoss Paterson <ross@soi.city.ac.uk>
Sun, 5 Feb 2017 23:52:47 +0000 (23:52 +0000)
Control/Applicative/Lift.hs

index 71ee6aa..4ae107f 100644 (file)
@@ -26,7 +26,8 @@ module Control.Applicative.Lift (
     -- * Collecting errors
     Errors,
     runErrors,
-    failure
+    failure,
+    eitherToErrors
   ) where
 
 import Data.Functor.Classes
@@ -146,3 +147,7 @@ runErrors (Pure x) = Right x
 failure :: e -> Errors e a
 failure e = Other (Constant e)
 {-# INLINE failure #-}
+
+-- | Convert from 'Either' to 'Errors' (inverse of 'runErrors').
+eitherToErrors :: Either e a -> Errors e a
+eitherToErrors = either failure Pure