module OAlg.Data.Symbol
( Symbol(..), xSymbol
)
where
import Control.DeepSeq(NFData(..))
import OAlg.Data.X
import OAlg.Data.Validable
data Symbol
= A | B | C | D | E | F | G | H | I | J | K | L | M
| N | O | P | Q | R | S | T | U | V | W | X | Y | Z
deriving (Int -> Symbol -> ShowS
[Symbol] -> ShowS
Symbol -> String
(Int -> Symbol -> ShowS)
-> (Symbol -> String) -> ([Symbol] -> ShowS) -> Show Symbol
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Symbol -> ShowS
showsPrec :: Int -> Symbol -> ShowS
$cshow :: Symbol -> String
show :: Symbol -> String
$cshowList :: [Symbol] -> ShowS
showList :: [Symbol] -> ShowS
Show,ReadPrec [Symbol]
ReadPrec Symbol
Int -> ReadS Symbol
ReadS [Symbol]
(Int -> ReadS Symbol)
-> ReadS [Symbol]
-> ReadPrec Symbol
-> ReadPrec [Symbol]
-> Read Symbol
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: Int -> ReadS Symbol
readsPrec :: Int -> ReadS Symbol
$creadList :: ReadS [Symbol]
readList :: ReadS [Symbol]
$creadPrec :: ReadPrec Symbol
readPrec :: ReadPrec Symbol
$creadListPrec :: ReadPrec [Symbol]
readListPrec :: ReadPrec [Symbol]
Read,Symbol -> Symbol -> Bool
(Symbol -> Symbol -> Bool)
-> (Symbol -> Symbol -> Bool) -> Eq Symbol
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Symbol -> Symbol -> Bool
== :: Symbol -> Symbol -> Bool
$c/= :: Symbol -> Symbol -> Bool
/= :: Symbol -> Symbol -> Bool
Eq,Eq Symbol
Eq Symbol =>
(Symbol -> Symbol -> Ordering)
-> (Symbol -> Symbol -> Bool)
-> (Symbol -> Symbol -> Bool)
-> (Symbol -> Symbol -> Bool)
-> (Symbol -> Symbol -> Bool)
-> (Symbol -> Symbol -> Symbol)
-> (Symbol -> Symbol -> Symbol)
-> Ord Symbol
Symbol -> Symbol -> Bool
Symbol -> Symbol -> Ordering
Symbol -> Symbol -> Symbol
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
$ccompare :: Symbol -> Symbol -> Ordering
compare :: Symbol -> Symbol -> Ordering
$c< :: Symbol -> Symbol -> Bool
< :: Symbol -> Symbol -> Bool
$c<= :: Symbol -> Symbol -> Bool
<= :: Symbol -> Symbol -> Bool
$c> :: Symbol -> Symbol -> Bool
> :: Symbol -> Symbol -> Bool
$c>= :: Symbol -> Symbol -> Bool
>= :: Symbol -> Symbol -> Bool
$cmax :: Symbol -> Symbol -> Symbol
max :: Symbol -> Symbol -> Symbol
$cmin :: Symbol -> Symbol -> Symbol
min :: Symbol -> Symbol -> Symbol
Ord,Int -> Symbol
Symbol -> Int
Symbol -> [Symbol]
Symbol -> Symbol
Symbol -> Symbol -> [Symbol]
Symbol -> Symbol -> Symbol -> [Symbol]
(Symbol -> Symbol)
-> (Symbol -> Symbol)
-> (Int -> Symbol)
-> (Symbol -> Int)
-> (Symbol -> [Symbol])
-> (Symbol -> Symbol -> [Symbol])
-> (Symbol -> Symbol -> [Symbol])
-> (Symbol -> Symbol -> Symbol -> [Symbol])
-> Enum Symbol
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: Symbol -> Symbol
succ :: Symbol -> Symbol
$cpred :: Symbol -> Symbol
pred :: Symbol -> Symbol
$ctoEnum :: Int -> Symbol
toEnum :: Int -> Symbol
$cfromEnum :: Symbol -> Int
fromEnum :: Symbol -> Int
$cenumFrom :: Symbol -> [Symbol]
enumFrom :: Symbol -> [Symbol]
$cenumFromThen :: Symbol -> Symbol -> [Symbol]
enumFromThen :: Symbol -> Symbol -> [Symbol]
$cenumFromTo :: Symbol -> Symbol -> [Symbol]
enumFromTo :: Symbol -> Symbol -> [Symbol]
$cenumFromThenTo :: Symbol -> Symbol -> Symbol -> [Symbol]
enumFromThenTo :: Symbol -> Symbol -> Symbol -> [Symbol]
Enum,Symbol
Symbol -> Symbol -> Bounded Symbol
forall a. a -> a -> Bounded a
$cminBound :: Symbol
minBound :: Symbol
$cmaxBound :: Symbol
maxBound :: Symbol
Bounded)
instance NFData Symbol where
rnf :: Symbol -> ()
rnf Symbol
A = ()
rnf Symbol
_ = ()
instance Validable Symbol where
valid :: Symbol -> Statement
valid = Symbol -> Statement
forall x. NFData x => x -> Statement
rnfValid
instance XStandard Symbol where
xStandard :: X Symbol
xStandard = X Symbol
xSymbol
xSymbol :: X Symbol
xSymbol :: X Symbol
xSymbol = X Symbol
forall a. (Enum a, Bounded a) => X a
xEnum