{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE DerivingStrategies, DeriveAnyClass, GeneralizedNewtypeDeriving #-}

module DSV.Position
  ( RowNumber (..)
  , ColumnNumber (..)
  , ColumnName (..)
  , Position (..)
  , At (..)
  , AtHeader (..)
  ) where

import DSV.IO
import DSV.Numbers
import DSV.Prelude

newtype RowNumber =
  RowNumber Positive
  deriving stock (RowNumber -> RowNumber -> Bool
(RowNumber -> RowNumber -> Bool)
-> (RowNumber -> RowNumber -> Bool) -> Eq RowNumber
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: RowNumber -> RowNumber -> Bool
$c/= :: RowNumber -> RowNumber -> Bool
== :: RowNumber -> RowNumber -> Bool
$c== :: RowNumber -> RowNumber -> Bool
Eq, Eq RowNumber
Eq RowNumber
-> (RowNumber -> RowNumber -> Ordering)
-> (RowNumber -> RowNumber -> Bool)
-> (RowNumber -> RowNumber -> Bool)
-> (RowNumber -> RowNumber -> Bool)
-> (RowNumber -> RowNumber -> Bool)
-> (RowNumber -> RowNumber -> RowNumber)
-> (RowNumber -> RowNumber -> RowNumber)
-> Ord RowNumber
RowNumber -> RowNumber -> Bool
RowNumber -> RowNumber -> Ordering
RowNumber -> RowNumber -> RowNumber
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: RowNumber -> RowNumber -> RowNumber
$cmin :: RowNumber -> RowNumber -> RowNumber
max :: RowNumber -> RowNumber -> RowNumber
$cmax :: RowNumber -> RowNumber -> RowNumber
>= :: RowNumber -> RowNumber -> Bool
$c>= :: RowNumber -> RowNumber -> Bool
> :: RowNumber -> RowNumber -> Bool
$c> :: RowNumber -> RowNumber -> Bool
<= :: RowNumber -> RowNumber -> Bool
$c<= :: RowNumber -> RowNumber -> Bool
< :: RowNumber -> RowNumber -> Bool
$c< :: RowNumber -> RowNumber -> Bool
compare :: RowNumber -> RowNumber -> Ordering
$ccompare :: RowNumber -> RowNumber -> Ordering
$cp1Ord :: Eq RowNumber
Ord)
  deriving newtype (Integer -> RowNumber
RowNumber -> RowNumber
RowNumber -> RowNumber -> RowNumber
(RowNumber -> RowNumber -> RowNumber)
-> (RowNumber -> RowNumber -> RowNumber)
-> (RowNumber -> RowNumber -> RowNumber)
-> (RowNumber -> RowNumber)
-> (RowNumber -> RowNumber)
-> (RowNumber -> RowNumber)
-> (Integer -> RowNumber)
-> Num RowNumber
forall a.
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> a)
-> (a -> a)
-> (Integer -> a)
-> Num a
fromInteger :: Integer -> RowNumber
$cfromInteger :: Integer -> RowNumber
signum :: RowNumber -> RowNumber
$csignum :: RowNumber -> RowNumber
abs :: RowNumber -> RowNumber
$cabs :: RowNumber -> RowNumber
negate :: RowNumber -> RowNumber
$cnegate :: RowNumber -> RowNumber
* :: RowNumber -> RowNumber -> RowNumber
$c* :: RowNumber -> RowNumber -> RowNumber
- :: RowNumber -> RowNumber -> RowNumber
$c- :: RowNumber -> RowNumber -> RowNumber
+ :: RowNumber -> RowNumber -> RowNumber
$c+ :: RowNumber -> RowNumber -> RowNumber
Num, Int -> RowNumber -> ShowS
[RowNumber] -> ShowS
RowNumber -> String
(Int -> RowNumber -> ShowS)
-> (RowNumber -> String)
-> ([RowNumber] -> ShowS)
-> Show RowNumber
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [RowNumber] -> ShowS
$cshowList :: [RowNumber] -> ShowS
show :: RowNumber -> String
$cshow :: RowNumber -> String
showsPrec :: Int -> RowNumber -> ShowS
$cshowsPrec :: Int -> RowNumber -> ShowS
Show)

newtype ColumnNumber =
  ColumnNumber Positive
  deriving stock (ColumnNumber -> ColumnNumber -> Bool
(ColumnNumber -> ColumnNumber -> Bool)
-> (ColumnNumber -> ColumnNumber -> Bool) -> Eq ColumnNumber
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ColumnNumber -> ColumnNumber -> Bool
$c/= :: ColumnNumber -> ColumnNumber -> Bool
== :: ColumnNumber -> ColumnNumber -> Bool
$c== :: ColumnNumber -> ColumnNumber -> Bool
Eq, Eq ColumnNumber
Eq ColumnNumber
-> (ColumnNumber -> ColumnNumber -> Ordering)
-> (ColumnNumber -> ColumnNumber -> Bool)
-> (ColumnNumber -> ColumnNumber -> Bool)
-> (ColumnNumber -> ColumnNumber -> Bool)
-> (ColumnNumber -> ColumnNumber -> Bool)
-> (ColumnNumber -> ColumnNumber -> ColumnNumber)
-> (ColumnNumber -> ColumnNumber -> ColumnNumber)
-> Ord ColumnNumber
ColumnNumber -> ColumnNumber -> Bool
ColumnNumber -> ColumnNumber -> Ordering
ColumnNumber -> ColumnNumber -> ColumnNumber
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: ColumnNumber -> ColumnNumber -> ColumnNumber
$cmin :: ColumnNumber -> ColumnNumber -> ColumnNumber
max :: ColumnNumber -> ColumnNumber -> ColumnNumber
$cmax :: ColumnNumber -> ColumnNumber -> ColumnNumber
>= :: ColumnNumber -> ColumnNumber -> Bool
$c>= :: ColumnNumber -> ColumnNumber -> Bool
> :: ColumnNumber -> ColumnNumber -> Bool
$c> :: ColumnNumber -> ColumnNumber -> Bool
<= :: ColumnNumber -> ColumnNumber -> Bool
$c<= :: ColumnNumber -> ColumnNumber -> Bool
< :: ColumnNumber -> ColumnNumber -> Bool
$c< :: ColumnNumber -> ColumnNumber -> Bool
compare :: ColumnNumber -> ColumnNumber -> Ordering
$ccompare :: ColumnNumber -> ColumnNumber -> Ordering
$cp1Ord :: Eq ColumnNumber
Ord)
  deriving newtype (Integer -> ColumnNumber
ColumnNumber -> ColumnNumber
ColumnNumber -> ColumnNumber -> ColumnNumber
(ColumnNumber -> ColumnNumber -> ColumnNumber)
-> (ColumnNumber -> ColumnNumber -> ColumnNumber)
-> (ColumnNumber -> ColumnNumber -> ColumnNumber)
-> (ColumnNumber -> ColumnNumber)
-> (ColumnNumber -> ColumnNumber)
-> (ColumnNumber -> ColumnNumber)
-> (Integer -> ColumnNumber)
-> Num ColumnNumber
forall a.
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> a)
-> (a -> a)
-> (Integer -> a)
-> Num a
fromInteger :: Integer -> ColumnNumber
$cfromInteger :: Integer -> ColumnNumber
signum :: ColumnNumber -> ColumnNumber
$csignum :: ColumnNumber -> ColumnNumber
abs :: ColumnNumber -> ColumnNumber
$cabs :: ColumnNumber -> ColumnNumber
negate :: ColumnNumber -> ColumnNumber
$cnegate :: ColumnNumber -> ColumnNumber
* :: ColumnNumber -> ColumnNumber -> ColumnNumber
$c* :: ColumnNumber -> ColumnNumber -> ColumnNumber
- :: ColumnNumber -> ColumnNumber -> ColumnNumber
$c- :: ColumnNumber -> ColumnNumber -> ColumnNumber
+ :: ColumnNumber -> ColumnNumber -> ColumnNumber
$c+ :: ColumnNumber -> ColumnNumber -> ColumnNumber
Num, Int -> ColumnNumber -> ShowS
[ColumnNumber] -> ShowS
ColumnNumber -> String
(Int -> ColumnNumber -> ShowS)
-> (ColumnNumber -> String)
-> ([ColumnNumber] -> ShowS)
-> Show ColumnNumber
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ColumnNumber] -> ShowS
$cshowList :: [ColumnNumber] -> ShowS
show :: ColumnNumber -> String
$cshow :: ColumnNumber -> String
showsPrec :: Int -> ColumnNumber -> ShowS
$cshowsPrec :: Int -> ColumnNumber -> ShowS
Show)

newtype ColumnName str =
  ColumnName str
  deriving stock (ColumnName str -> ColumnName str -> Bool
(ColumnName str -> ColumnName str -> Bool)
-> (ColumnName str -> ColumnName str -> Bool)
-> Eq (ColumnName str)
forall str. Eq str => ColumnName str -> ColumnName str -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ColumnName str -> ColumnName str -> Bool
$c/= :: forall str. Eq str => ColumnName str -> ColumnName str -> Bool
== :: ColumnName str -> ColumnName str -> Bool
$c== :: forall str. Eq str => ColumnName str -> ColumnName str -> Bool
Eq, Eq (ColumnName str)
Eq (ColumnName str)
-> (ColumnName str -> ColumnName str -> Ordering)
-> (ColumnName str -> ColumnName str -> Bool)
-> (ColumnName str -> ColumnName str -> Bool)
-> (ColumnName str -> ColumnName str -> Bool)
-> (ColumnName str -> ColumnName str -> Bool)
-> (ColumnName str -> ColumnName str -> ColumnName str)
-> (ColumnName str -> ColumnName str -> ColumnName str)
-> Ord (ColumnName str)
ColumnName str -> ColumnName str -> Bool
ColumnName str -> ColumnName str -> Ordering
ColumnName str -> ColumnName str -> ColumnName str
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
forall str. Ord str => Eq (ColumnName str)
forall str. Ord str => ColumnName str -> ColumnName str -> Bool
forall str. Ord str => ColumnName str -> ColumnName str -> Ordering
forall str.
Ord str =>
ColumnName str -> ColumnName str -> ColumnName str
min :: ColumnName str -> ColumnName str -> ColumnName str
$cmin :: forall str.
Ord str =>
ColumnName str -> ColumnName str -> ColumnName str
max :: ColumnName str -> ColumnName str -> ColumnName str
$cmax :: forall str.
Ord str =>
ColumnName str -> ColumnName str -> ColumnName str
>= :: ColumnName str -> ColumnName str -> Bool
$c>= :: forall str. Ord str => ColumnName str -> ColumnName str -> Bool
> :: ColumnName str -> ColumnName str -> Bool
$c> :: forall str. Ord str => ColumnName str -> ColumnName str -> Bool
<= :: ColumnName str -> ColumnName str -> Bool
$c<= :: forall str. Ord str => ColumnName str -> ColumnName str -> Bool
< :: ColumnName str -> ColumnName str -> Bool
$c< :: forall str. Ord str => ColumnName str -> ColumnName str -> Bool
compare :: ColumnName str -> ColumnName str -> Ordering
$ccompare :: forall str. Ord str => ColumnName str -> ColumnName str -> Ordering
$cp1Ord :: forall str. Ord str => Eq (ColumnName str)
Ord, Int -> ColumnName str -> ShowS
[ColumnName str] -> ShowS
ColumnName str -> String
(Int -> ColumnName str -> ShowS)
-> (ColumnName str -> String)
-> ([ColumnName str] -> ShowS)
-> Show (ColumnName str)
forall str. Show str => Int -> ColumnName str -> ShowS
forall str. Show str => [ColumnName str] -> ShowS
forall str. Show str => ColumnName str -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ColumnName str] -> ShowS
$cshowList :: forall str. Show str => [ColumnName str] -> ShowS
show :: ColumnName str -> String
$cshow :: forall str. Show str => ColumnName str -> String
showsPrec :: Int -> ColumnName str -> ShowS
$cshowsPrec :: forall str. Show str => Int -> ColumnName str -> ShowS
Show)

data Position row col =
  Position row col
  deriving stock (Position row col -> Position row col -> Bool
(Position row col -> Position row col -> Bool)
-> (Position row col -> Position row col -> Bool)
-> Eq (Position row col)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall row col.
(Eq row, Eq col) =>
Position row col -> Position row col -> Bool
/= :: Position row col -> Position row col -> Bool
$c/= :: forall row col.
(Eq row, Eq col) =>
Position row col -> Position row col -> Bool
== :: Position row col -> Position row col -> Bool
$c== :: forall row col.
(Eq row, Eq col) =>
Position row col -> Position row col -> Bool
Eq, Eq (Position row col)
Eq (Position row col)
-> (Position row col -> Position row col -> Ordering)
-> (Position row col -> Position row col -> Bool)
-> (Position row col -> Position row col -> Bool)
-> (Position row col -> Position row col -> Bool)
-> (Position row col -> Position row col -> Bool)
-> (Position row col -> Position row col -> Position row col)
-> (Position row col -> Position row col -> Position row col)
-> Ord (Position row col)
Position row col -> Position row col -> Bool
Position row col -> Position row col -> Ordering
Position row col -> Position row col -> Position row col
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
forall row col. (Ord row, Ord col) => Eq (Position row col)
forall row col.
(Ord row, Ord col) =>
Position row col -> Position row col -> Bool
forall row col.
(Ord row, Ord col) =>
Position row col -> Position row col -> Ordering
forall row col.
(Ord row, Ord col) =>
Position row col -> Position row col -> Position row col
min :: Position row col -> Position row col -> Position row col
$cmin :: forall row col.
(Ord row, Ord col) =>
Position row col -> Position row col -> Position row col
max :: Position row col -> Position row col -> Position row col
$cmax :: forall row col.
(Ord row, Ord col) =>
Position row col -> Position row col -> Position row col
>= :: Position row col -> Position row col -> Bool
$c>= :: forall row col.
(Ord row, Ord col) =>
Position row col -> Position row col -> Bool
> :: Position row col -> Position row col -> Bool
$c> :: forall row col.
(Ord row, Ord col) =>
Position row col -> Position row col -> Bool
<= :: Position row col -> Position row col -> Bool
$c<= :: forall row col.
(Ord row, Ord col) =>
Position row col -> Position row col -> Bool
< :: Position row col -> Position row col -> Bool
$c< :: forall row col.
(Ord row, Ord col) =>
Position row col -> Position row col -> Bool
compare :: Position row col -> Position row col -> Ordering
$ccompare :: forall row col.
(Ord row, Ord col) =>
Position row col -> Position row col -> Ordering
$cp1Ord :: forall row col. (Ord row, Ord col) => Eq (Position row col)
Ord, Int -> Position row col -> ShowS
[Position row col] -> ShowS
Position row col -> String
(Int -> Position row col -> ShowS)
-> (Position row col -> String)
-> ([Position row col] -> ShowS)
-> Show (Position row col)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall row col.
(Show row, Show col) =>
Int -> Position row col -> ShowS
forall row col. (Show row, Show col) => [Position row col] -> ShowS
forall row col. (Show row, Show col) => Position row col -> String
showList :: [Position row col] -> ShowS
$cshowList :: forall row col. (Show row, Show col) => [Position row col] -> ShowS
show :: Position row col -> String
$cshow :: forall row col. (Show row, Show col) => Position row col -> String
showsPrec :: Int -> Position row col -> ShowS
$cshowsPrec :: forall row col.
(Show row, Show col) =>
Int -> Position row col -> ShowS
Show)

data At p a = At p {- ^ Position -} a
  deriving stock (At p a -> At p a -> Bool
(At p a -> At p a -> Bool)
-> (At p a -> At p a -> Bool) -> Eq (At p a)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall p a. (Eq p, Eq a) => At p a -> At p a -> Bool
/= :: At p a -> At p a -> Bool
$c/= :: forall p a. (Eq p, Eq a) => At p a -> At p a -> Bool
== :: At p a -> At p a -> Bool
$c== :: forall p a. (Eq p, Eq a) => At p a -> At p a -> Bool
Eq, Eq (At p a)
Eq (At p a)
-> (At p a -> At p a -> Ordering)
-> (At p a -> At p a -> Bool)
-> (At p a -> At p a -> Bool)
-> (At p a -> At p a -> Bool)
-> (At p a -> At p a -> Bool)
-> (At p a -> At p a -> At p a)
-> (At p a -> At p a -> At p a)
-> Ord (At p a)
At p a -> At p a -> Bool
At p a -> At p a -> Ordering
At p a -> At p a -> At p a
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
forall p a. (Ord p, Ord a) => Eq (At p a)
forall p a. (Ord p, Ord a) => At p a -> At p a -> Bool
forall p a. (Ord p, Ord a) => At p a -> At p a -> Ordering
forall p a. (Ord p, Ord a) => At p a -> At p a -> At p a
min :: At p a -> At p a -> At p a
$cmin :: forall p a. (Ord p, Ord a) => At p a -> At p a -> At p a
max :: At p a -> At p a -> At p a
$cmax :: forall p a. (Ord p, Ord a) => At p a -> At p a -> At p a
>= :: At p a -> At p a -> Bool
$c>= :: forall p a. (Ord p, Ord a) => At p a -> At p a -> Bool
> :: At p a -> At p a -> Bool
$c> :: forall p a. (Ord p, Ord a) => At p a -> At p a -> Bool
<= :: At p a -> At p a -> Bool
$c<= :: forall p a. (Ord p, Ord a) => At p a -> At p a -> Bool
< :: At p a -> At p a -> Bool
$c< :: forall p a. (Ord p, Ord a) => At p a -> At p a -> Bool
compare :: At p a -> At p a -> Ordering
$ccompare :: forall p a. (Ord p, Ord a) => At p a -> At p a -> Ordering
$cp1Ord :: forall p a. (Ord p, Ord a) => Eq (At p a)
Ord, Int -> At p a -> ShowS
[At p a] -> ShowS
At p a -> String
(Int -> At p a -> ShowS)
-> (At p a -> String) -> ([At p a] -> ShowS) -> Show (At p a)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall p a. (Show p, Show a) => Int -> At p a -> ShowS
forall p a. (Show p, Show a) => [At p a] -> ShowS
forall p a. (Show p, Show a) => At p a -> String
showList :: [At p a] -> ShowS
$cshowList :: forall p a. (Show p, Show a) => [At p a] -> ShowS
show :: At p a -> String
$cshow :: forall p a. (Show p, Show a) => At p a -> String
showsPrec :: Int -> At p a -> ShowS
$cshowsPrec :: forall p a. (Show p, Show a) => Int -> At p a -> ShowS
Show)
  deriving anyclass Show (At p a)
Typeable (At p a)
Typeable (At p a)
-> Show (At p a)
-> (At p a -> SomeException)
-> (SomeException -> Maybe (At p a))
-> (At p a -> String)
-> Exception (At p a)
SomeException -> Maybe (At p a)
At p a -> String
At p a -> SomeException
forall e.
Typeable e
-> Show e
-> (e -> SomeException)
-> (SomeException -> Maybe e)
-> (e -> String)
-> Exception e
forall p a.
(Typeable p, Typeable a, Show p, Show a) =>
Show (At p a)
forall p a.
(Typeable p, Typeable a, Show p, Show a) =>
Typeable (At p a)
forall p a.
(Typeable p, Typeable a, Show p, Show a) =>
SomeException -> Maybe (At p a)
forall p a.
(Typeable p, Typeable a, Show p, Show a) =>
At p a -> String
forall p a.
(Typeable p, Typeable a, Show p, Show a) =>
At p a -> SomeException
displayException :: At p a -> String
$cdisplayException :: forall p a.
(Typeable p, Typeable a, Show p, Show a) =>
At p a -> String
fromException :: SomeException -> Maybe (At p a)
$cfromException :: forall p a.
(Typeable p, Typeable a, Show p, Show a) =>
SomeException -> Maybe (At p a)
toException :: At p a -> SomeException
$ctoException :: forall p a.
(Typeable p, Typeable a, Show p, Show a) =>
At p a -> SomeException
$cp2Exception :: forall p a.
(Typeable p, Typeable a, Show p, Show a) =>
Show (At p a)
$cp1Exception :: forall p a.
(Typeable p, Typeable a, Show p, Show a) =>
Typeable (At p a)
Exception

data AtHeader a = AtHeader a
  deriving stock (AtHeader a -> AtHeader a -> Bool
(AtHeader a -> AtHeader a -> Bool)
-> (AtHeader a -> AtHeader a -> Bool) -> Eq (AtHeader a)
forall a. Eq a => AtHeader a -> AtHeader a -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AtHeader a -> AtHeader a -> Bool
$c/= :: forall a. Eq a => AtHeader a -> AtHeader a -> Bool
== :: AtHeader a -> AtHeader a -> Bool
$c== :: forall a. Eq a => AtHeader a -> AtHeader a -> Bool
Eq, Eq (AtHeader a)
Eq (AtHeader a)
-> (AtHeader a -> AtHeader a -> Ordering)
-> (AtHeader a -> AtHeader a -> Bool)
-> (AtHeader a -> AtHeader a -> Bool)
-> (AtHeader a -> AtHeader a -> Bool)
-> (AtHeader a -> AtHeader a -> Bool)
-> (AtHeader a -> AtHeader a -> AtHeader a)
-> (AtHeader a -> AtHeader a -> AtHeader a)
-> Ord (AtHeader a)
AtHeader a -> AtHeader a -> Bool
AtHeader a -> AtHeader a -> Ordering
AtHeader a -> AtHeader a -> AtHeader a
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
forall a. Ord a => Eq (AtHeader a)
forall a. Ord a => AtHeader a -> AtHeader a -> Bool
forall a. Ord a => AtHeader a -> AtHeader a -> Ordering
forall a. Ord a => AtHeader a -> AtHeader a -> AtHeader a
min :: AtHeader a -> AtHeader a -> AtHeader a
$cmin :: forall a. Ord a => AtHeader a -> AtHeader a -> AtHeader a
max :: AtHeader a -> AtHeader a -> AtHeader a
$cmax :: forall a. Ord a => AtHeader a -> AtHeader a -> AtHeader a
>= :: AtHeader a -> AtHeader a -> Bool
$c>= :: forall a. Ord a => AtHeader a -> AtHeader a -> Bool
> :: AtHeader a -> AtHeader a -> Bool
$c> :: forall a. Ord a => AtHeader a -> AtHeader a -> Bool
<= :: AtHeader a -> AtHeader a -> Bool
$c<= :: forall a. Ord a => AtHeader a -> AtHeader a -> Bool
< :: AtHeader a -> AtHeader a -> Bool
$c< :: forall a. Ord a => AtHeader a -> AtHeader a -> Bool
compare :: AtHeader a -> AtHeader a -> Ordering
$ccompare :: forall a. Ord a => AtHeader a -> AtHeader a -> Ordering
$cp1Ord :: forall a. Ord a => Eq (AtHeader a)
Ord, Int -> AtHeader a -> ShowS
[AtHeader a] -> ShowS
AtHeader a -> String
(Int -> AtHeader a -> ShowS)
-> (AtHeader a -> String)
-> ([AtHeader a] -> ShowS)
-> Show (AtHeader a)
forall a. Show a => Int -> AtHeader a -> ShowS
forall a. Show a => [AtHeader a] -> ShowS
forall a. Show a => AtHeader a -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AtHeader a] -> ShowS
$cshowList :: forall a. Show a => [AtHeader a] -> ShowS
show :: AtHeader a -> String
$cshow :: forall a. Show a => AtHeader a -> String
showsPrec :: Int -> AtHeader a -> ShowS
$cshowsPrec :: forall a. Show a => Int -> AtHeader a -> ShowS
Show)
  deriving anyclass Show (AtHeader a)
Typeable (AtHeader a)
Typeable (AtHeader a)
-> Show (AtHeader a)
-> (AtHeader a -> SomeException)
-> (SomeException -> Maybe (AtHeader a))
-> (AtHeader a -> String)
-> Exception (AtHeader a)
SomeException -> Maybe (AtHeader a)
AtHeader a -> String
AtHeader a -> SomeException
forall a. (Typeable a, Show a) => Show (AtHeader a)
forall a. (Typeable a, Show a) => Typeable (AtHeader a)
forall a.
(Typeable a, Show a) =>
SomeException -> Maybe (AtHeader a)
forall a. (Typeable a, Show a) => AtHeader a -> String
forall a. (Typeable a, Show a) => AtHeader a -> SomeException
forall e.
Typeable e
-> Show e
-> (e -> SomeException)
-> (SomeException -> Maybe e)
-> (e -> String)
-> Exception e
displayException :: AtHeader a -> String
$cdisplayException :: forall a. (Typeable a, Show a) => AtHeader a -> String
fromException :: SomeException -> Maybe (AtHeader a)
$cfromException :: forall a.
(Typeable a, Show a) =>
SomeException -> Maybe (AtHeader a)
toException :: AtHeader a -> SomeException
$ctoException :: forall a. (Typeable a, Show a) => AtHeader a -> SomeException
$cp2Exception :: forall a. (Typeable a, Show a) => Show (AtHeader a)
$cp1Exception :: forall a. (Typeable a, Show a) => Typeable (AtHeader a)
Exception