{-# language DeriveFunctor, GeneralizedNewtypeDeriving, DeriveTraversable, DeriveDataTypeable #-}
-- {-# language ConstraintKinds #-}
{-# OPTIONS_GHC -Wno-unused-top-binds #-}
{-# OPTIONS_GHC -Wno-type-defaults #-}
-----------------------------------------------------------------------------
-- |
-- Module      :  Core.Data.Row.Internal
-- Description :  Core.Data.Row internal bits and pieces
-- Copyright   :  (c) Marco Zocca (2018-2019)
-- License     :  BSD-style
-- Maintainer  :  ocramz fripost org
-- Stability   :  experimental
-- Portability :  GHC
--
-----------------------------------------------------------------------------
module Core.Data.Row.Internal where

import Data.Typeable (Typeable)
-- import Data.Hashable (Hashable(..))
import Control.Monad.Catch(Exception(..))


-- | Key exceptions 
data KeyError k =
    MissingKeyError k
  | AlreadyPresentKeyError k
  deriving (Int -> KeyError k -> ShowS
[KeyError k] -> ShowS
KeyError k -> String
(Int -> KeyError k -> ShowS)
-> (KeyError k -> String)
-> ([KeyError k] -> ShowS)
-> Show (KeyError k)
forall k. Show k => Int -> KeyError k -> ShowS
forall k. Show k => [KeyError k] -> ShowS
forall k. Show k => KeyError k -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [KeyError k] -> ShowS
$cshowList :: forall k. Show k => [KeyError k] -> ShowS
show :: KeyError k -> String
$cshow :: forall k. Show k => KeyError k -> String
showsPrec :: Int -> KeyError k -> ShowS
$cshowsPrec :: forall k. Show k => Int -> KeyError k -> ShowS
Show, KeyError k -> KeyError k -> Bool
(KeyError k -> KeyError k -> Bool)
-> (KeyError k -> KeyError k -> Bool) -> Eq (KeyError k)
forall k. Eq k => KeyError k -> KeyError k -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: KeyError k -> KeyError k -> Bool
$c/= :: forall k. Eq k => KeyError k -> KeyError k -> Bool
== :: KeyError k -> KeyError k -> Bool
$c== :: forall k. Eq k => KeyError k -> KeyError k -> Bool
Eq, Typeable)
instance (Show k, Typeable k) => Exception (KeyError k)