module ASCII.Char
(
Char (..),
toInt, fromIntMaybe, fromIntUnsafe,
allCharacters
)
where
import Data.Bool ( otherwise )
import Data.Data ( Data )
import Data.Eq ( Eq, (==), (/=) )
import Data.Ord ( Ord, (<), (>) )
import Data.Hashable ( Hashable )
import Data.Int ( Int )
import Data.Maybe ( Maybe (..) )
import Prelude ( Enum, enumFromTo, toEnum, fromEnum,
Bounded, minBound, maxBound )
import Text.Show ( Show )
import GHC.Generics ( Generic )
import qualified Data.Char as C
data Char =
Null | StartOfHeading | StartOfText | EndOfText | EndOfTransmission | Enquiry | Acknowledgement | Bell | Backspace | HorizontalTab | LineFeed | VerticalTab | FormFeed | CarriageReturn | ShiftOut | ShiftIn | DataLinkEscape
| DeviceControl1 | DeviceControl2 | DeviceControl3 | DeviceControl4
| NegativeAcknowledgement | SynchronousIdle | EndOfTransmissionBlock | Cancel | EndOfMedium | Substitute | Escape
| FileSeparator | GroupSeparator | RecordSeparator | UnitSeparator
| Space | ExclamationMark | QuotationMark | NumberSign | DollarSign | PercentSign | Ampersand | Apostrophe | LeftParenthesis | RightParenthesis | Asterisk | PlusSign | Comma | HyphenMinus | FullStop | Slash
| Digit0 | Digit1 | Digit2 | Digit3 | Digit4 | Digit5 | Digit6 | Digit7 | Digit8 | Digit9
| Colon | Semicolon | LessThanSign | EqualsSign | GreaterThanSign | QuestionMark | AtSign
| CapitalLetterA | CapitalLetterB | CapitalLetterC | CapitalLetterD | CapitalLetterE | CapitalLetterF | CapitalLetterG | CapitalLetterH | CapitalLetterI | CapitalLetterJ | CapitalLetterK | CapitalLetterL | CapitalLetterM | CapitalLetterN | CapitalLetterO | CapitalLetterP | CapitalLetterQ | CapitalLetterR | CapitalLetterS | CapitalLetterT | CapitalLetterU | CapitalLetterV | CapitalLetterW | CapitalLetterX | CapitalLetterY | CapitalLetterZ
| LeftSquareBracket | Backslash | RightSquareBracket | Caret | Underscore | GraveAccent
| SmallLetterA | SmallLetterB | SmallLetterC | SmallLetterD | SmallLetterE | SmallLetterF | SmallLetterG | SmallLetterH | SmallLetterI | SmallLetterJ | SmallLetterK | SmallLetterL | SmallLetterM | SmallLetterN | SmallLetterO | SmallLetterP | SmallLetterQ | SmallLetterR | SmallLetterS | SmallLetterT | SmallLetterU | SmallLetterV | SmallLetterW | SmallLetterX | SmallLetterY | SmallLetterZ
| LeftCurlyBracket | VerticalLine | RightCurlyBracket | Tilde | Delete
deriving stock instance Eq Char
deriving stock instance Ord Char
deriving stock instance Enum Char
deriving stock instance Bounded Char
deriving stock instance Show Char
deriving stock instance Data Char
deriving stock instance Generic Char
deriving anyclass instance Hashable Char
toInt :: Char -> Int
toInt :: Char -> Int
toInt = Char -> Int
forall a. Enum a => a -> Int
Prelude.fromEnum
fromIntMaybe :: Int -> Maybe Char
fromIntMaybe :: Int -> Maybe Char
fromIntMaybe Int
x | Int
x Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
< Int
0 = Maybe Char
forall a. Maybe a
Nothing
| Int
x Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
> Int
127 = Maybe Char
forall a. Maybe a
Nothing
| Bool
otherwise = Char -> Maybe Char
forall a. a -> Maybe a
Just (Int -> Char
fromIntUnsafe Int
x)
fromIntUnsafe :: Int -> Char
fromIntUnsafe :: Int -> Char
fromIntUnsafe = Int -> Char
forall a. Enum a => Int -> a
Prelude.toEnum
allCharacters :: [Char]
allCharacters :: [Char]
allCharacters = Char -> Char -> [Char]
forall a. Enum a => a -> a -> [a]
Prelude.enumFromTo Char
forall a. Bounded a => a
Prelude.minBound Char
forall a. Bounded a => a
Prelude.maxBound