{-# LANGUAGE GeneralizedNewtypeDeriving #-} module TuringMachine.Symbol ( Symbol, symbol, numSymbol, blankSymbol, ) where newtype Symbol = S { Symbol -> Int numSymbol :: Int } deriving (Symbol -> Symbol -> Bool (Symbol -> Symbol -> Bool) -> (Symbol -> Symbol -> Bool) -> Eq Symbol forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: Symbol -> Symbol -> Bool $c/= :: Symbol -> Symbol -> Bool == :: Symbol -> Symbol -> Bool $c== :: 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 min :: Symbol -> Symbol -> Symbol $cmin :: Symbol -> Symbol -> Symbol max :: Symbol -> Symbol -> Symbol $cmax :: Symbol -> Symbol -> Symbol >= :: Symbol -> Symbol -> Bool $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 compare :: Symbol -> Symbol -> Ordering $ccompare :: Symbol -> Symbol -> Ordering $cp1Ord :: Eq Symbol Ord, Integer -> Symbol Symbol -> Symbol Symbol -> Symbol -> Symbol (Symbol -> Symbol -> Symbol) -> (Symbol -> Symbol -> Symbol) -> (Symbol -> Symbol -> Symbol) -> (Symbol -> Symbol) -> (Symbol -> Symbol) -> (Symbol -> Symbol) -> (Integer -> Symbol) -> Num Symbol forall a. (a -> a -> a) -> (a -> a -> a) -> (a -> a -> a) -> (a -> a) -> (a -> a) -> (a -> a) -> (Integer -> a) -> Num a fromInteger :: Integer -> Symbol $cfromInteger :: Integer -> Symbol signum :: Symbol -> Symbol $csignum :: Symbol -> Symbol abs :: Symbol -> Symbol $cabs :: Symbol -> Symbol negate :: Symbol -> Symbol $cnegate :: Symbol -> Symbol * :: Symbol -> Symbol -> Symbol $c* :: Symbol -> Symbol -> Symbol - :: Symbol -> Symbol -> Symbol $c- :: Symbol -> Symbol -> Symbol + :: Symbol -> Symbol -> Symbol $c+ :: Symbol -> Symbol -> Symbol Num, 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 enumFromThenTo :: Symbol -> Symbol -> Symbol -> [Symbol] $cenumFromThenTo :: Symbol -> Symbol -> Symbol -> [Symbol] enumFromTo :: Symbol -> Symbol -> [Symbol] $cenumFromTo :: Symbol -> Symbol -> [Symbol] enumFromThen :: Symbol -> Symbol -> [Symbol] $cenumFromThen :: Symbol -> Symbol -> [Symbol] enumFrom :: Symbol -> [Symbol] $cenumFrom :: Symbol -> [Symbol] fromEnum :: Symbol -> Int $cfromEnum :: Symbol -> Int toEnum :: Int -> Symbol $ctoEnum :: Int -> Symbol pred :: Symbol -> Symbol $cpred :: Symbol -> Symbol succ :: Symbol -> Symbol $csucc :: Symbol -> Symbol Enum) instance Bounded Symbol where minBound :: Symbol minBound = Int -> Symbol S Int 0 maxBound :: Symbol maxBound = Int -> Symbol S Int forall a. Bounded a => a maxBound symbol :: Int -> Symbol symbol :: Int -> Symbol symbol = Int -> Symbol S blankSymbol :: Symbol blankSymbol :: Symbol blankSymbol = Int -> Symbol S Int 0