-- | A pure MonadFail.
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
module Agda.Utils.Fail where

import Control.Monad.Fail

newtype Fail a = Fail { runFail :: Either String a }
  deriving (Functor, Applicative, Monad)

instance MonadFail Fail where
  fail = Fail . Left

runFail_ :: Fail a -> a
runFail_ = either error id . runFail