{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE LambdaCase #-}

module DSV.Validation
  ( Validation (Success, Failure)
  , overFailure
  ) where

-- validation
import Data.Validation

overFailure :: (e1 -> e2) -> Validation e1 a -> Validation e2 a
overFailure :: (e1 -> e2) -> Validation e1 a -> Validation e2 a
overFailure e1 -> e2
f =
  \case
    Failure e1
e -> e2 -> Validation e2 a
forall err a. err -> Validation err a
Failure (e1 -> e2
f e1
e)
    Success a
x -> a -> Validation e2 a
forall err a. a -> Validation err a
Success a
x