{-# LANGUAGE DeriveGeneric #-}
module Jordan.Generic.Options
    where

import GHC.Generics (Generic)

data SumTypeEncoding
  = TagVal
  | TagInField
  deriving (Int -> SumTypeEncoding -> ShowS
[SumTypeEncoding] -> ShowS
SumTypeEncoding -> String
(Int -> SumTypeEncoding -> ShowS)
-> (SumTypeEncoding -> String)
-> ([SumTypeEncoding] -> ShowS)
-> Show SumTypeEncoding
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SumTypeEncoding] -> ShowS
$cshowList :: [SumTypeEncoding] -> ShowS
show :: SumTypeEncoding -> String
$cshow :: SumTypeEncoding -> String
showsPrec :: Int -> SumTypeEncoding -> ShowS
$cshowsPrec :: Int -> SumTypeEncoding -> ShowS
Show, ReadPrec [SumTypeEncoding]
ReadPrec SumTypeEncoding
Int -> ReadS SumTypeEncoding
ReadS [SumTypeEncoding]
(Int -> ReadS SumTypeEncoding)
-> ReadS [SumTypeEncoding]
-> ReadPrec SumTypeEncoding
-> ReadPrec [SumTypeEncoding]
-> Read SumTypeEncoding
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [SumTypeEncoding]
$creadListPrec :: ReadPrec [SumTypeEncoding]
readPrec :: ReadPrec SumTypeEncoding
$creadPrec :: ReadPrec SumTypeEncoding
readList :: ReadS [SumTypeEncoding]
$creadList :: ReadS [SumTypeEncoding]
readsPrec :: Int -> ReadS SumTypeEncoding
$creadsPrec :: Int -> ReadS SumTypeEncoding
Read, SumTypeEncoding -> SumTypeEncoding -> Bool
(SumTypeEncoding -> SumTypeEncoding -> Bool)
-> (SumTypeEncoding -> SumTypeEncoding -> Bool)
-> Eq SumTypeEncoding
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SumTypeEncoding -> SumTypeEncoding -> Bool
$c/= :: SumTypeEncoding -> SumTypeEncoding -> Bool
== :: SumTypeEncoding -> SumTypeEncoding -> Bool
$c== :: SumTypeEncoding -> SumTypeEncoding -> Bool
Eq, Eq SumTypeEncoding
Eq SumTypeEncoding
-> (SumTypeEncoding -> SumTypeEncoding -> Ordering)
-> (SumTypeEncoding -> SumTypeEncoding -> Bool)
-> (SumTypeEncoding -> SumTypeEncoding -> Bool)
-> (SumTypeEncoding -> SumTypeEncoding -> Bool)
-> (SumTypeEncoding -> SumTypeEncoding -> Bool)
-> (SumTypeEncoding -> SumTypeEncoding -> SumTypeEncoding)
-> (SumTypeEncoding -> SumTypeEncoding -> SumTypeEncoding)
-> Ord SumTypeEncoding
SumTypeEncoding -> SumTypeEncoding -> Bool
SumTypeEncoding -> SumTypeEncoding -> Ordering
SumTypeEncoding -> SumTypeEncoding -> SumTypeEncoding
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 :: SumTypeEncoding -> SumTypeEncoding -> SumTypeEncoding
$cmin :: SumTypeEncoding -> SumTypeEncoding -> SumTypeEncoding
max :: SumTypeEncoding -> SumTypeEncoding -> SumTypeEncoding
$cmax :: SumTypeEncoding -> SumTypeEncoding -> SumTypeEncoding
>= :: SumTypeEncoding -> SumTypeEncoding -> Bool
$c>= :: SumTypeEncoding -> SumTypeEncoding -> Bool
> :: SumTypeEncoding -> SumTypeEncoding -> Bool
$c> :: SumTypeEncoding -> SumTypeEncoding -> Bool
<= :: SumTypeEncoding -> SumTypeEncoding -> Bool
$c<= :: SumTypeEncoding -> SumTypeEncoding -> Bool
< :: SumTypeEncoding -> SumTypeEncoding -> Bool
$c< :: SumTypeEncoding -> SumTypeEncoding -> Bool
compare :: SumTypeEncoding -> SumTypeEncoding -> Ordering
$ccompare :: SumTypeEncoding -> SumTypeEncoding -> Ordering
$cp1Ord :: Eq SumTypeEncoding
Ord, SumTypeEncoding
SumTypeEncoding -> SumTypeEncoding -> Bounded SumTypeEncoding
forall a. a -> a -> Bounded a
maxBound :: SumTypeEncoding
$cmaxBound :: SumTypeEncoding
minBound :: SumTypeEncoding
$cminBound :: SumTypeEncoding
Bounded, Int -> SumTypeEncoding
SumTypeEncoding -> Int
SumTypeEncoding -> [SumTypeEncoding]
SumTypeEncoding -> SumTypeEncoding
SumTypeEncoding -> SumTypeEncoding -> [SumTypeEncoding]
SumTypeEncoding
-> SumTypeEncoding -> SumTypeEncoding -> [SumTypeEncoding]
(SumTypeEncoding -> SumTypeEncoding)
-> (SumTypeEncoding -> SumTypeEncoding)
-> (Int -> SumTypeEncoding)
-> (SumTypeEncoding -> Int)
-> (SumTypeEncoding -> [SumTypeEncoding])
-> (SumTypeEncoding -> SumTypeEncoding -> [SumTypeEncoding])
-> (SumTypeEncoding -> SumTypeEncoding -> [SumTypeEncoding])
-> (SumTypeEncoding
    -> SumTypeEncoding -> SumTypeEncoding -> [SumTypeEncoding])
-> Enum SumTypeEncoding
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: SumTypeEncoding
-> SumTypeEncoding -> SumTypeEncoding -> [SumTypeEncoding]
$cenumFromThenTo :: SumTypeEncoding
-> SumTypeEncoding -> SumTypeEncoding -> [SumTypeEncoding]
enumFromTo :: SumTypeEncoding -> SumTypeEncoding -> [SumTypeEncoding]
$cenumFromTo :: SumTypeEncoding -> SumTypeEncoding -> [SumTypeEncoding]
enumFromThen :: SumTypeEncoding -> SumTypeEncoding -> [SumTypeEncoding]
$cenumFromThen :: SumTypeEncoding -> SumTypeEncoding -> [SumTypeEncoding]
enumFrom :: SumTypeEncoding -> [SumTypeEncoding]
$cenumFrom :: SumTypeEncoding -> [SumTypeEncoding]
fromEnum :: SumTypeEncoding -> Int
$cfromEnum :: SumTypeEncoding -> Int
toEnum :: Int -> SumTypeEncoding
$ctoEnum :: Int -> SumTypeEncoding
pred :: SumTypeEncoding -> SumTypeEncoding
$cpred :: SumTypeEncoding -> SumTypeEncoding
succ :: SumTypeEncoding -> SumTypeEncoding
$csucc :: SumTypeEncoding -> SumTypeEncoding
Enum, (forall x. SumTypeEncoding -> Rep SumTypeEncoding x)
-> (forall x. Rep SumTypeEncoding x -> SumTypeEncoding)
-> Generic SumTypeEncoding
forall x. Rep SumTypeEncoding x -> SumTypeEncoding
forall x. SumTypeEncoding -> Rep SumTypeEncoding x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep SumTypeEncoding x -> SumTypeEncoding
$cfrom :: forall x. SumTypeEncoding -> Rep SumTypeEncoding x
Generic)

newtype PartOfSum f a = PartOfSum { PartOfSum f a -> f a
getPartOfSum :: f a }