strict-data-0.2.0.2: src/Data/Fail/Types.hs
{-# LANGUAGE CPP #-}
{-# LANGUAGE DeriveFoldable #-}
{-# LANGUAGE DeriveTraversable #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE ViewPatterns #-}
module Data.Fail.Types
( Fail(..), pattern Fail
, FailT(..)
, FIO
)
where
import qualified Data.Text as T
pattern Fail :: String -> Fail a
pattern Fail x <- Err (T.unpack -> x) where
Fail x = Err (T.pack x)
#if (MIN_VERSION_base(4,10,0))
{-# COMPLETE Ok, Fail #-}
#endif
data Fail a
= Err !T.Text
| Ok !a
deriving (Show, Ord, Eq, Functor, Foldable, Traversable)
newtype FailT m a = FailT { unFailT :: m (Fail a) }
deriving (Functor)
type FIO a = FailT IO a