character-ps-0.1/0000755000000000000000000000000007346545000012117 5ustar0000000000000000character-ps-0.1/LICENSE0000644000000000000000000000276207346545000013133 0ustar0000000000000000Copyright (c) 2023, Oleg Grenrus All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Oleg Grenrus nor the names of other contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. character-ps-0.1/character-ps.cabal0000644000000000000000000000244307346545000015462 0ustar0000000000000000cabal-version: 2.2 name: character-ps version: 0.1 synopsis: Pattern synonyms for ASCII characters for Word8, Word16 etc description: Pattern synonyms for ASCII characters, e.g. . @ pattern SPACE :: Word8 pattern SPACE = 0x20 @ homepage: https://github.com/phadej/character-ps bug-reports: https://github.com/phadej/character-ps/issues license: BSD-3-Clause license-file: LICENSE author: Oleg Grenrus maintainer: Oleg Grenrus category: Data build-type: Simple tested-with: GHC ==8.0.2 || ==8.2.2 || ==8.4.4 || ==8.6.5 || ==8.8.4 || ==8.10.7 || ==9.0.2 || ==9.2.8 || ==9.4.7 || ==9.6.3 || ==9.8.1 source-repository head type: git location: https://github.com/phadej/character-ps.git common language default-language: Haskell2010 default-extensions: PatternSynonyms library import: language hs-source-dirs: src exposed-modules: Data.Char.Patterns Data.Word16.Patterns Data.Word8.Patterns build-depends: base >=4.9 && <5 test-suite character-ps-tests import: language hs-source-dirs: tests main-is: character-ps-tests.hs type: exitcode-stdio-1.0 build-depends: , base , character-ps character-ps-0.1/src/Data/Char/0000755000000000000000000000000007346545000014434 5ustar0000000000000000character-ps-0.1/src/Data/Char/Patterns.hs0000644000000000000000000002701707346545000016577 0ustar0000000000000000-- | This module provides pattern synonyms for 'Char' in [Basic Latin block](https://compart.com/en/unicode/block/U+0000) (range @'\x00'-'\x7f'@). -- -- The pattern names are inspired by Unicode (letter and digits) and PostScript names (symbols), -- e.g. @/@ is 'SLASH', not @SOLIDUS@. -- -- This module is designed to be imported qualified -- -- @ -- import "Data.Char.Patterns" as C -- -- hello = [C.'LOWER_H', C.'LOWER_E', C.'LOWER_L', C.'LOWER_L', C.'LOWER_O'] -- @ -- -- but can also be used unqualified as well. -- module Data.Char.Patterns where ------------------------------------------------------------------------------- -- * Control characters, x00-x1f ------------------------------------------------------------------------------- -- | Null character (NUL) pattern NUL :: Char pattern NUL = '\x00' -- | Start of Heading (SOH) pattern SOH :: Char pattern SOH = '\x01' -- | Start of Text (STX) pattern STX :: Char pattern STX = '\x02' -- | End of Text (ETX) pattern ETX :: Char pattern ETX = '\x03' -- | End of Transmission (EOT) pattern EOT :: Char pattern EOT = '\x04' -- | Enquiry (ENQ) pattern ENQ :: Char pattern ENQ = '\x05' -- | Acknowledge (ACK) pattern ACK :: Char pattern ACK = '\x06' -- | Alert (BEL) pattern BEL :: Char pattern BEL = '\x07' -- | Backspace (BS) pattern BS :: Char pattern BS = '\x08' -- | Character tabulation (TAB) pattern TAB :: Char pattern TAB = '\x09' -- | End of line, line feed (LF) pattern LF :: Char pattern LF = '\x0a' -- | Line tabulation, vertical tab (VT) pattern VT :: Char pattern VT = '\x0b' -- | Form feed (FF) pattern FF :: Char pattern FF = '\x0c' -- | Carriage Return (CR) pattern CR :: Char pattern CR = '\x0d' -- | Locking-Shift One, Shift Out (SO) pattern SO :: Char pattern SO = '\x0e' -- | Locking-Shift Zero, Shift In (SI) pattern SI :: Char pattern SI = '\x0f' -- | Data Link Escape (DLE) pattern DLE :: Char pattern DLE = '\x10' -- | Device Control One, XON (DC1) pattern DC1 :: Char pattern DC1 = '\x11' -- | Device Control Two (DC2) pattern DC2 :: Char pattern DC2 = '\x12' -- | Device Control Three, XOFF (DC3) pattern DC3 :: Char pattern DC3 = '\x13' -- | Device Control Four (DC4) pattern DC4 :: Char pattern DC4 = '\x14' -- | Negative Acknowledge (NAK) pattern NAK :: Char pattern NAK = '\x15' -- | Syncronous Idle (SYN) pattern SYN :: Char pattern SYN = '\x16' -- | End of Transmission Block (ETB) pattern ETB :: Char pattern ETB = '\x17' -- | Cancel (CAN) pattern CAN :: Char pattern CAN = '\x18' -- | End of Medium (EOM) pattern EOM :: Char pattern EOM = '\x19' -- | Substitute (SUB) pattern SUB :: Char pattern SUB = '\x1a' -- | Escape (ESC) pattern ESC :: Char pattern ESC = '\x1b' -- | File Separator (FS) pattern FS :: Char pattern FS = '\x1c' -- | Group Separator (GS) pattern GS :: Char pattern GS = '\x1d' -- | Information Separator One, Record Separator (RS) pattern RS :: Char pattern RS = '\x1e' -- | Information Separator Two, Unit Separator (US) pattern US :: Char pattern US = '\x1f' ------------------------------------------------------------------------------- -- * Symbols 1, x20-x2f ------------------------------------------------------------------------------- -- | Space (SP), @' '@. pattern SPACE :: Char pattern SPACE = '\x20' -- | Exclamation mark, @!@ pattern EXCLAM :: Char pattern EXCLAM = '\x21' -- | Quotation mark, double quote, @"@ pattern DOUBLE_QUOTE :: Char pattern DOUBLE_QUOTE = '\x22' -- | Number sign, @#@ pattern NUMBER :: Char pattern NUMBER = '\x23' -- | Dollar sign, @$@ pattern DOLLAR :: Char pattern DOLLAR = '\x24' -- | Percent sign, @%@ pattern PERCENT :: Char pattern PERCENT = '\x25' -- | Ampersand, @&@ pattern AMPERSAND :: Char pattern AMPERSAND = '\x26' -- | Apostrophe, single quote, @'@ pattern SINGLE_QUOTE :: Char pattern SINGLE_QUOTE = '\x27' -- | Left parenthesis, @(@ pattern LEFT_PAREN :: Char pattern LEFT_PAREN = '\x28' -- | Right parenthesis, @)@ pattern RIGHT_PAREN :: Char pattern RIGHT_PAREN = '\x29' -- | Asterisk, @*@ pattern ASTERISK :: Char pattern ASTERISK = '\x2a' -- | Plus sign, @+@ pattern PLUS :: Char pattern PLUS = '\x2b' -- | Comma, @,@ pattern COMMA :: Char pattern COMMA = '\x2c' -- | Hyphen-minus, @-@ pattern HYPHEN :: Char pattern HYPHEN = '\x2d' -- | Full stop, period, @.@ pattern PERIOD :: Char pattern PERIOD = '\x2e' -- | Solidus, slash, @/@ pattern SLASH :: Char pattern SLASH = '\x2f' ------------------------------------------------------------------------------- -- * Digits, x30-x39 ------------------------------------------------------------------------------- -- | Digit 0, @0@ pattern DIGIT_0 :: Char pattern DIGIT_0 = '\x30' -- | Digit 1, @1@ pattern DIGIT_1 :: Char pattern DIGIT_1 = '\x31' -- | Digit 2, @2@ pattern DIGIT_2 :: Char pattern DIGIT_2 = '\x32' -- | Digit 3, @3@ pattern DIGIT_3 :: Char pattern DIGIT_3 = '\x33' -- | Digit 4, @4@ pattern DIGIT_4 :: Char pattern DIGIT_4 = '\x34' -- | Digit 5, @5@ pattern DIGIT_5 :: Char pattern DIGIT_5 = '\x35' -- | Digit 6, @6@ pattern DIGIT_6 :: Char pattern DIGIT_6 = '\x36' -- | Digit 7, @7@ pattern DIGIT_7 :: Char pattern DIGIT_7 = '\x37' -- | Digit 8, @8@ pattern DIGIT_8 :: Char pattern DIGIT_8 = '\x38' -- | Digit 9, @9@ pattern DIGIT_9 :: Char pattern DIGIT_9 = '\x39' ------------------------------------------------------------------------------- -- * Symbols 2, x3a-x40 ------------------------------------------------------------------------------- -- | Colon, @:@ pattern COLON :: Char pattern COLON = '\x3a' -- | Semicolon, @;@ pattern SEMICOLON :: Char pattern SEMICOLON = '\x3b' -- | Less-than sign, @<@ pattern LESS :: Char pattern LESS = '\x3c' -- | Equals sign, @=@ pattern EQUAL :: Char pattern EQUAL = '\x3d' -- | Greater-than sign, @>@ pattern GREATER :: Char pattern GREATER = '\x3e' -- | Question mark, @?@ pattern QUESTION :: Char pattern QUESTION = '\x3f' -- | Commercial At, @\@@ pattern AT :: Char pattern AT = '\x40' ------------------------------------------------------------------------------- -- * Upper case letters, x41-x5a ------------------------------------------------------------------------------- -- | Latin small letter A, @A@ pattern UPPER_A :: Char pattern UPPER_A = '\x41' -- | Latin small letter B, @B@ pattern UPPER_B :: Char pattern UPPER_B = '\x42' -- | Latin small letter C, @C@ pattern UPPER_C :: Char pattern UPPER_C = '\x43' -- | Latin small letter D, @D@ pattern UPPER_D :: Char pattern UPPER_D = '\x44' -- | Latin small letter E, @E@ pattern UPPER_E :: Char pattern UPPER_E = '\x45' -- | Latin small letter F, @F@ pattern UPPER_F :: Char pattern UPPER_F = '\x46' -- | Latin small letter G, @G@ pattern UPPER_G :: Char pattern UPPER_G = '\x47' -- | Latin small letter H, @H@ pattern UPPER_H :: Char pattern UPPER_H = '\x48' -- | Latin small letter I, @I@ pattern UPPER_I :: Char pattern UPPER_I = '\x49' -- | Latin small letter J, @J@ pattern UPPER_J :: Char pattern UPPER_J = '\x4a' -- | Latin small letter K, @K@ pattern UPPER_K :: Char pattern UPPER_K = '\x4b' -- | Latin small letter L, @L@ pattern UPPER_L :: Char pattern UPPER_L = '\x4c' -- | Latin small letter M, @M@ pattern UPPER_M :: Char pattern UPPER_M = '\x4d' -- | Latin small letter N, @N@ pattern UPPER_N :: Char pattern UPPER_N = '\x4e' -- | Latin small letter O, @O@ pattern UPPER_O :: Char pattern UPPER_O = '\x4f' -- | Latin small letter P, @P@ pattern UPPER_P :: Char pattern UPPER_P = '\x50' -- | Latin small letter Q, @Q@ pattern UPPER_Q :: Char pattern UPPER_Q = '\x51' -- | Latin small letter R, @R@ pattern UPPER_R :: Char pattern UPPER_R = '\x52' -- | Latin small letter S, @S@ pattern UPPER_S :: Char pattern UPPER_S = '\x53' -- | Latin small letter T, @T@ pattern UPPER_T :: Char pattern UPPER_T = '\x54' -- | Latin small letter U, @U@ pattern UPPER_U :: Char pattern UPPER_U = '\x55' -- | Latin small letter V, @V@ pattern UPPER_V :: Char pattern UPPER_V = '\x56' -- | Latin small letter W, @W@ pattern UPPER_W :: Char pattern UPPER_W = '\x57' -- | Latin small letter X, @X@ pattern UPPER_X :: Char pattern UPPER_X = '\x58' -- | Latin small letter Y, @Y@ pattern UPPER_Y :: Char pattern UPPER_Y = '\x59' -- | Latin small letter Z, @Z@ pattern UPPER_Z :: Char pattern UPPER_Z = '\x5a' ------------------------------------------------------------------------------- -- * Symbols 3, x5b-x60 ------------------------------------------------------------------------------- -- | Left square bracket, @[@ pattern LEFT_SQUARE :: Char pattern LEFT_SQUARE = '\x5b' -- | Reverse solidus, backslash, @\\@ pattern BACKSLASH :: Char pattern BACKSLASH = '\x5c' -- | Right square bracket, @]@ pattern RIGHT_SQUARE :: Char pattern RIGHT_SQUARE = '\x5d' -- | Circumflex accent, @^@ pattern CIRCUM :: Char pattern CIRCUM = '\x5e' -- | Low line, underscore, @_@ pattern UNDERSCORE :: Char pattern UNDERSCORE = '\x5f' -- | Grave accent, @`@ pattern GRAVE :: Char pattern GRAVE = '\x60' ------------------------------------------------------------------------------- -- * Lower case letters, x61-x7a ------------------------------------------------------------------------------- -- | Latin small letter A, @a@ pattern LOWER_A :: Char pattern LOWER_A = '\x61' -- | Latin small letter B, @b@ pattern LOWER_B :: Char pattern LOWER_B = '\x62' -- | Latin small letter C, @c@ pattern LOWER_C :: Char pattern LOWER_C = '\x63' -- | Latin small letter D, @d@ pattern LOWER_D :: Char pattern LOWER_D = '\x64' -- | Latin small letter E, @e@ pattern LOWER_E :: Char pattern LOWER_E = '\x65' -- | Latin small letter F, @f@ pattern LOWER_F :: Char pattern LOWER_F = '\x66' -- | Latin small letter G, @g@ pattern LOWER_G :: Char pattern LOWER_G = '\x67' -- | Latin small letter H, @h@ pattern LOWER_H :: Char pattern LOWER_H = '\x68' -- | Latin small letter I, @i@ pattern LOWER_I :: Char pattern LOWER_I = '\x69' -- | Latin small letter J, @j@ pattern LOWER_J :: Char pattern LOWER_J = '\x6a' -- | Latin small letter K, @k@ pattern LOWER_K :: Char pattern LOWER_K = '\x6b' -- | Latin small letter L, @l@ pattern LOWER_L :: Char pattern LOWER_L = '\x6c' -- | Latin small letter M, @m@ pattern LOWER_M :: Char pattern LOWER_M = '\x6d' -- | Latin small letter N, @n@ pattern LOWER_N :: Char pattern LOWER_N = '\x6e' -- | Latin small letter O, @o@ pattern LOWER_O :: Char pattern LOWER_O = '\x6f' -- | Latin small letter P, @p@ pattern LOWER_P :: Char pattern LOWER_P = '\x70' -- | Latin small letter Q, @q@ pattern LOWER_Q :: Char pattern LOWER_Q = '\x71' -- | Latin small letter R, @r@ pattern LOWER_R :: Char pattern LOWER_R = '\x72' -- | Latin small letter S, @s@ pattern LOWER_S :: Char pattern LOWER_S = '\x73' -- | Latin small letter T, @t@ pattern LOWER_T :: Char pattern LOWER_T = '\x74' -- | Latin small letter U, @u@ pattern LOWER_U :: Char pattern LOWER_U = '\x75' -- | Latin small letter V, @v@ pattern LOWER_V :: Char pattern LOWER_V = '\x76' -- | Latin small letter W, @w@ pattern LOWER_W :: Char pattern LOWER_W = '\x77' -- | Latin small letter X, @x@ pattern LOWER_X :: Char pattern LOWER_X = '\x78' -- | Latin small letter Y, @y@ pattern LOWER_Y :: Char pattern LOWER_Y = '\x79' -- | Latin small letter Z, @z@ pattern LOWER_Z :: Char pattern LOWER_Z = '\x7a' ------------------------------------------------------------------------------- -- * Symbols 5, x7b-x7f ------------------------------------------------------------------------------- -- | Left curly bracket, @{@ pattern LEFT_CURLY :: Char pattern LEFT_CURLY = '\x7b' -- | Vertical line, vecrtical bar, @|@ pattern BAR :: Char pattern BAR = '\x7c' -- | Right curly bracket, @}@ pattern RIGHT_CURLY :: Char pattern RIGHT_CURLY = '\x7d' -- | Tilde, @~@ pattern TILDE :: Char pattern TILDE = '\x7e' -- | Delete (DEL) pattern DEL :: Char pattern DEL = '\x7f' character-ps-0.1/src/Data/Word16/0000755000000000000000000000000007346545000014641 5ustar0000000000000000character-ps-0.1/src/Data/Word16/Patterns.hs0000644000000000000000000002707007346545000017003 0ustar0000000000000000-- | This module provides pattern synonyms for 'Word16' in [Basic Latin block](https://compart.com/en/unicode/block/U+0000) (range @0x00-0x7f@). -- -- The pattern names are inspired by Unicode (letter and digits) and PostScript names (symbols), -- e.g. @/@ is 'SLASH', not @SOLIDUS@. -- -- This module is designed to be imported qualified -- -- @ -- import "Data.Word16.Patterns" as W16 -- -- hello = [W16.'LOWER_H', W16.'LOWER_E', W16.'LOWER_L', W16.'LOWER_L', W16.'LOWER_O'] -- @ -- -- but can also be used unqualified as well. -- module Data.Word16.Patterns where import Data.Word (Word16) ------------------------------------------------------------------------------- -- * Control characters, x00-x1f ------------------------------------------------------------------------------- -- | Null character (NUL) pattern NUL :: Word16 pattern NUL = 0x00 -- | Start of Heading (SOH) pattern SOH :: Word16 pattern SOH = 0x01 -- | Start of Text (STX) pattern STX :: Word16 pattern STX = 0x02 -- | End of Text (ETX) pattern ETX :: Word16 pattern ETX = 0x03 -- | End of Transmission (EOT) pattern EOT :: Word16 pattern EOT = 0x04 -- | Enquiry (ENQ) pattern ENQ :: Word16 pattern ENQ = 0x05 -- | Acknowledge (ACK) pattern ACK :: Word16 pattern ACK = 0x06 -- | Alert (BEL) pattern BEL :: Word16 pattern BEL = 0x07 -- | Backspace (BS) pattern BS :: Word16 pattern BS = 0x08 -- | Character tabulation (TAB) pattern TAB :: Word16 pattern TAB = 0x09 -- | End of line, line feed (LF) pattern LF :: Word16 pattern LF = 0x0a -- | Line tabulation, vertical tab (VT) pattern VT :: Word16 pattern VT = 0x0b -- | Form feed (FF) pattern FF :: Word16 pattern FF = 0x0c -- | Carriage Return (CR) pattern CR :: Word16 pattern CR = 0x0d -- | Locking-Shift One, Shift Out (SO) pattern SO :: Word16 pattern SO = 0x0e -- | Locking-Shift Zero, Shift In (SI) pattern SI :: Word16 pattern SI = 0x0f -- | Data Link Escape (DLE) pattern DLE :: Word16 pattern DLE = 0x10 -- | Device Control One, XON (DC1) pattern DC1 :: Word16 pattern DC1 = 0x11 -- | Device Control Two (DC2) pattern DC2 :: Word16 pattern DC2 = 0x12 -- | Device Control Three, XOFF (DC3) pattern DC3 :: Word16 pattern DC3 = 0x13 -- | Device Control Four (DC4) pattern DC4 :: Word16 pattern DC4 = 0x14 -- | Negative Acknowledge (NAK) pattern NAK :: Word16 pattern NAK = 0x15 -- | Syncronous Idle (SYN) pattern SYN :: Word16 pattern SYN = 0x16 -- | End of Transmission Block (ETB) pattern ETB :: Word16 pattern ETB = 0x17 -- | Cancel (CAN) pattern CAN :: Word16 pattern CAN = 0x18 -- | End of Medium (EOM) pattern EOM :: Word16 pattern EOM = 0x19 -- | Substitute (SUB) pattern SUB :: Word16 pattern SUB = 0x1a -- | Escape (ESC) pattern ESC :: Word16 pattern ESC = 0x1b -- | File Separator (FS) pattern FS :: Word16 pattern FS = 0x1c -- | Group Separator (GS) pattern GS :: Word16 pattern GS = 0x1d -- | Information Separator One, Record Separator (RS) pattern RS :: Word16 pattern RS = 0x1e -- | Information Separator Two, Unit Separator (US) pattern US :: Word16 pattern US = 0x1f ------------------------------------------------------------------------------- -- * Symbols 1, x20-x2f ------------------------------------------------------------------------------- -- | Space (SP), @' '@. pattern SPACE :: Word16 pattern SPACE = 0x20 -- | Exclamation mark, @!@ pattern EXCLAM :: Word16 pattern EXCLAM = 0x21 -- | Quotation mark, double quote, @"@ pattern DOUBLE_QUOTE :: Word16 pattern DOUBLE_QUOTE = 0x22 -- | Number sign, @#@ pattern NUMBER :: Word16 pattern NUMBER = 0x23 -- | Dollar sign, @$@ pattern DOLLAR :: Word16 pattern DOLLAR = 0x24 -- | Percent sign, @%@ pattern PERCENT :: Word16 pattern PERCENT = 0x25 -- | Ampersand, @&@ pattern AMPERSAND :: Word16 pattern AMPERSAND = 0x26 -- | Apostrophe, single quote, @'@ pattern SINGLE_QUOTE :: Word16 pattern SINGLE_QUOTE = 0x27 -- | Left parenthesis, @(@ pattern LEFT_PAREN :: Word16 pattern LEFT_PAREN = 0x28 -- | Right parenthesis, @)@ pattern RIGHT_PAREN :: Word16 pattern RIGHT_PAREN = 0x29 -- | Asterisk, @*@ pattern ASTERISK :: Word16 pattern ASTERISK = 0x2a -- | Plus sign, @+@ pattern PLUS :: Word16 pattern PLUS = 0x2b -- | Comma, @,@ pattern COMMA :: Word16 pattern COMMA = 0x2c -- | Hyphen-minus, @-@ pattern HYPHEN :: Word16 pattern HYPHEN = 0x2d -- | Full stop, period, @.@ pattern PERIOD :: Word16 pattern PERIOD = 0x2e -- | Solidus, slash, @/@ pattern SLASH :: Word16 pattern SLASH = 0x2f ------------------------------------------------------------------------------- -- * Digits, x30-x39 ------------------------------------------------------------------------------- -- | Digit 0, @0@ pattern DIGIT_0 :: Word16 pattern DIGIT_0 = 0x30 -- | Digit 1, @1@ pattern DIGIT_1 :: Word16 pattern DIGIT_1 = 0x31 -- | Digit 2, @2@ pattern DIGIT_2 :: Word16 pattern DIGIT_2 = 0x32 -- | Digit 3, @3@ pattern DIGIT_3 :: Word16 pattern DIGIT_3 = 0x33 -- | Digit 4, @4@ pattern DIGIT_4 :: Word16 pattern DIGIT_4 = 0x34 -- | Digit 5, @5@ pattern DIGIT_5 :: Word16 pattern DIGIT_5 = 0x35 -- | Digit 6, @6@ pattern DIGIT_6 :: Word16 pattern DIGIT_6 = 0x36 -- | Digit 7, @7@ pattern DIGIT_7 :: Word16 pattern DIGIT_7 = 0x37 -- | Digit 8, @8@ pattern DIGIT_8 :: Word16 pattern DIGIT_8 = 0x38 -- | Digit 9, @9@ pattern DIGIT_9 :: Word16 pattern DIGIT_9 = 0x39 ------------------------------------------------------------------------------- -- * Symbols 2, x3a-x40 ------------------------------------------------------------------------------- -- | Colon, @:@ pattern COLON :: Word16 pattern COLON = 0x3a -- | Semicolon, @;@ pattern SEMICOLON :: Word16 pattern SEMICOLON = 0x3b -- | Less-than sign, @<@ pattern LESS :: Word16 pattern LESS = 0x3c -- | Equals sign, @=@ pattern EQUAL :: Word16 pattern EQUAL = 0x3d -- | Greater-than sign, @>@ pattern GREATER :: Word16 pattern GREATER = 0x3e -- | Question mark, @?@ pattern QUESTION :: Word16 pattern QUESTION = 0x3f -- | Commercial At, @\@@ pattern AT :: Word16 pattern AT = 0x40 ------------------------------------------------------------------------------- -- * Upper case letters, x41-x5a ------------------------------------------------------------------------------- -- | Latin small letter A, @A@ pattern UPPER_A :: Word16 pattern UPPER_A = 0x41 -- | Latin small letter B, @B@ pattern UPPER_B :: Word16 pattern UPPER_B = 0x42 -- | Latin small letter C, @C@ pattern UPPER_C :: Word16 pattern UPPER_C = 0x43 -- | Latin small letter D, @D@ pattern UPPER_D :: Word16 pattern UPPER_D = 0x44 -- | Latin small letter E, @E@ pattern UPPER_E :: Word16 pattern UPPER_E = 0x45 -- | Latin small letter F, @F@ pattern UPPER_F :: Word16 pattern UPPER_F = 0x46 -- | Latin small letter G, @G@ pattern UPPER_G :: Word16 pattern UPPER_G = 0x47 -- | Latin small letter H, @H@ pattern UPPER_H :: Word16 pattern UPPER_H = 0x48 -- | Latin small letter I, @I@ pattern UPPER_I :: Word16 pattern UPPER_I = 0x49 -- | Latin small letter J, @J@ pattern UPPER_J :: Word16 pattern UPPER_J = 0x4a -- | Latin small letter K, @K@ pattern UPPER_K :: Word16 pattern UPPER_K = 0x4b -- | Latin small letter L, @L@ pattern UPPER_L :: Word16 pattern UPPER_L = 0x4c -- | Latin small letter M, @M@ pattern UPPER_M :: Word16 pattern UPPER_M = 0x4d -- | Latin small letter N, @N@ pattern UPPER_N :: Word16 pattern UPPER_N = 0x4e -- | Latin small letter O, @O@ pattern UPPER_O :: Word16 pattern UPPER_O = 0x4f -- | Latin small letter P, @P@ pattern UPPER_P :: Word16 pattern UPPER_P = 0x50 -- | Latin small letter Q, @Q@ pattern UPPER_Q :: Word16 pattern UPPER_Q = 0x51 -- | Latin small letter R, @R@ pattern UPPER_R :: Word16 pattern UPPER_R = 0x52 -- | Latin small letter S, @S@ pattern UPPER_S :: Word16 pattern UPPER_S = 0x53 -- | Latin small letter T, @T@ pattern UPPER_T :: Word16 pattern UPPER_T = 0x54 -- | Latin small letter U, @U@ pattern UPPER_U :: Word16 pattern UPPER_U = 0x55 -- | Latin small letter V, @V@ pattern UPPER_V :: Word16 pattern UPPER_V = 0x56 -- | Latin small letter W, @W@ pattern UPPER_W :: Word16 pattern UPPER_W = 0x57 -- | Latin small letter X, @X@ pattern UPPER_X :: Word16 pattern UPPER_X = 0x58 -- | Latin small letter Y, @Y@ pattern UPPER_Y :: Word16 pattern UPPER_Y = 0x59 -- | Latin small letter Z, @Z@ pattern UPPER_Z :: Word16 pattern UPPER_Z = 0x5a ------------------------------------------------------------------------------- -- * Symbols 3, x5b-x60 ------------------------------------------------------------------------------- -- | Left square bracket, @[@ pattern LEFT_SQUARE :: Word16 pattern LEFT_SQUARE = 0x5b -- | Reverse solidus, backslash, @\\@ pattern BACKSLASH :: Word16 pattern BACKSLASH = 0x5c -- | Right square bracket, @]@ pattern RIGHT_SQUARE :: Word16 pattern RIGHT_SQUARE = 0x5d -- | Circumflex accent, @^@ pattern CIRCUM :: Word16 pattern CIRCUM = 0x5e -- | Low line, underscore, @_@ pattern UNDERSCORE :: Word16 pattern UNDERSCORE = 0x5f -- | Grave accent, @`@ pattern GRAVE :: Word16 pattern GRAVE = 0x60 ------------------------------------------------------------------------------- -- * Lower case letters, x61-x7a ------------------------------------------------------------------------------- -- | Latin small letter A, @a@ pattern LOWER_A :: Word16 pattern LOWER_A = 0x61 -- | Latin small letter B, @b@ pattern LOWER_B :: Word16 pattern LOWER_B = 0x62 -- | Latin small letter C, @c@ pattern LOWER_C :: Word16 pattern LOWER_C = 0x63 -- | Latin small letter D, @d@ pattern LOWER_D :: Word16 pattern LOWER_D = 0x64 -- | Latin small letter E, @e@ pattern LOWER_E :: Word16 pattern LOWER_E = 0x65 -- | Latin small letter F, @f@ pattern LOWER_F :: Word16 pattern LOWER_F = 0x66 -- | Latin small letter G, @g@ pattern LOWER_G :: Word16 pattern LOWER_G = 0x67 -- | Latin small letter H, @h@ pattern LOWER_H :: Word16 pattern LOWER_H = 0x68 -- | Latin small letter I, @i@ pattern LOWER_I :: Word16 pattern LOWER_I = 0x69 -- | Latin small letter J, @j@ pattern LOWER_J :: Word16 pattern LOWER_J = 0x6a -- | Latin small letter K, @k@ pattern LOWER_K :: Word16 pattern LOWER_K = 0x6b -- | Latin small letter L, @l@ pattern LOWER_L :: Word16 pattern LOWER_L = 0x6c -- | Latin small letter M, @m@ pattern LOWER_M :: Word16 pattern LOWER_M = 0x6d -- | Latin small letter N, @n@ pattern LOWER_N :: Word16 pattern LOWER_N = 0x6e -- | Latin small letter O, @o@ pattern LOWER_O :: Word16 pattern LOWER_O = 0x6f -- | Latin small letter P, @p@ pattern LOWER_P :: Word16 pattern LOWER_P = 0x70 -- | Latin small letter Q, @q@ pattern LOWER_Q :: Word16 pattern LOWER_Q = 0x71 -- | Latin small letter R, @r@ pattern LOWER_R :: Word16 pattern LOWER_R = 0x72 -- | Latin small letter S, @s@ pattern LOWER_S :: Word16 pattern LOWER_S = 0x73 -- | Latin small letter T, @t@ pattern LOWER_T :: Word16 pattern LOWER_T = 0x74 -- | Latin small letter U, @u@ pattern LOWER_U :: Word16 pattern LOWER_U = 0x75 -- | Latin small letter V, @v@ pattern LOWER_V :: Word16 pattern LOWER_V = 0x76 -- | Latin small letter W, @w@ pattern LOWER_W :: Word16 pattern LOWER_W = 0x77 -- | Latin small letter X, @x@ pattern LOWER_X :: Word16 pattern LOWER_X = 0x78 -- | Latin small letter Y, @y@ pattern LOWER_Y :: Word16 pattern LOWER_Y = 0x79 -- | Latin small letter Z, @z@ pattern LOWER_Z :: Word16 pattern LOWER_Z = 0x7a ------------------------------------------------------------------------------- -- * Symbols 5, x7b-x7f ------------------------------------------------------------------------------- -- | Left curly bracket, @{@ pattern LEFT_CURLY :: Word16 pattern LEFT_CURLY = 0x7b -- | Vertical line, vecrtical bar, @|@ pattern BAR :: Word16 pattern BAR = 0x7c -- | Right curly bracket, @}@ pattern RIGHT_CURLY :: Word16 pattern RIGHT_CURLY = 0x7d -- | Tilde, @~@ pattern TILDE :: Word16 pattern TILDE = 0x7e -- | Delete (DEL) pattern DEL :: Word16 pattern DEL = 0x7f character-ps-0.1/src/Data/Word8/0000755000000000000000000000000007346545000014562 5ustar0000000000000000character-ps-0.1/src/Data/Word8/Patterns.hs0000644000000000000000000002665607346545000016735 0ustar0000000000000000-- | This module provides pattern synonyms for 'Word8' in [Basic Latin block](https://compart.com/en/unicode/block/U+0000) (range @0x00-0x7f@). -- -- The pattern names are inspired by Unicode (letter and digits) and PostScript names (symbols), -- e.g. @/@ is 'SLASH', not @SOLIDUS@. -- -- This module is designed to be imported qualified -- -- @ -- import "Data.Word8.Patterns" as W8 -- -- hello = [W8.'LOWER_H', W8.'LOWER_E', W8.'LOWER_L', W8.'LOWER_L', W8.'LOWER_O'] -- @ -- -- but can also be used unqualified as well. -- module Data.Word8.Patterns where import Data.Word (Word8) ------------------------------------------------------------------------------- -- * Control characters, x00-x1f ------------------------------------------------------------------------------- -- | Null character (NUL) pattern NUL :: Word8 pattern NUL = 0x00 -- | Start of Heading (SOH) pattern SOH :: Word8 pattern SOH = 0x01 -- | Start of Text (STX) pattern STX :: Word8 pattern STX = 0x02 -- | End of Text (ETX) pattern ETX :: Word8 pattern ETX = 0x03 -- | End of Transmission (EOT) pattern EOT :: Word8 pattern EOT = 0x04 -- | Enquiry (ENQ) pattern ENQ :: Word8 pattern ENQ = 0x05 -- | Acknowledge (ACK) pattern ACK :: Word8 pattern ACK = 0x06 -- | Alert (BEL) pattern BEL :: Word8 pattern BEL = 0x07 -- | Backspace (BS) pattern BS :: Word8 pattern BS = 0x08 -- | Character tabulation (TAB) pattern TAB :: Word8 pattern TAB = 0x09 -- | End of line, line feed (LF) pattern LF :: Word8 pattern LF = 0x0a -- | Line tabulation, vertical tab (VT) pattern VT :: Word8 pattern VT = 0x0b -- | Form feed (FF) pattern FF :: Word8 pattern FF = 0x0c -- | Carriage Return (CR) pattern CR :: Word8 pattern CR = 0x0d -- | Locking-Shift One, Shift Out (SO) pattern SO :: Word8 pattern SO = 0x0e -- | Locking-Shift Zero, Shift In (SI) pattern SI :: Word8 pattern SI = 0x0f -- | Data Link Escape (DLE) pattern DLE :: Word8 pattern DLE = 0x10 -- | Device Control One, XON (DC1) pattern DC1 :: Word8 pattern DC1 = 0x11 -- | Device Control Two (DC2) pattern DC2 :: Word8 pattern DC2 = 0x12 -- | Device Control Three, XOFF (DC3) pattern DC3 :: Word8 pattern DC3 = 0x13 -- | Device Control Four (DC4) pattern DC4 :: Word8 pattern DC4 = 0x14 -- | Negative Acknowledge (NAK) pattern NAK :: Word8 pattern NAK = 0x15 -- | Syncronous Idle (SYN) pattern SYN :: Word8 pattern SYN = 0x16 -- | End of Transmission Block (ETB) pattern ETB :: Word8 pattern ETB = 0x17 -- | Cancel (CAN) pattern CAN :: Word8 pattern CAN = 0x18 -- | End of Medium (EOM) pattern EOM :: Word8 pattern EOM = 0x19 -- | Substitute (SUB) pattern SUB :: Word8 pattern SUB = 0x1a -- | Escape (ESC) pattern ESC :: Word8 pattern ESC = 0x1b -- | File Separator (FS) pattern FS :: Word8 pattern FS = 0x1c -- | Group Separator (GS) pattern GS :: Word8 pattern GS = 0x1d -- | Information Separator One, Record Separator (RS) pattern RS :: Word8 pattern RS = 0x1e -- | Information Separator Two, Unit Separator (US) pattern US :: Word8 pattern US = 0x1f ------------------------------------------------------------------------------- -- * Symbols 1, x20-x2f ------------------------------------------------------------------------------- -- | Space (SP), @' '@. pattern SPACE :: Word8 pattern SPACE = 0x20 -- | Exclamation mark, @!@ pattern EXCLAM :: Word8 pattern EXCLAM = 0x21 -- | Quotation mark, double quote, @"@ pattern DOUBLE_QUOTE :: Word8 pattern DOUBLE_QUOTE = 0x22 -- | Number sign, @#@ pattern NUMBER :: Word8 pattern NUMBER = 0x23 -- | Dollar sign, @$@ pattern DOLLAR :: Word8 pattern DOLLAR = 0x24 -- | Percent sign, @%@ pattern PERCENT :: Word8 pattern PERCENT = 0x25 -- | Ampersand, @&@ pattern AMPERSAND :: Word8 pattern AMPERSAND = 0x26 -- | Apostrophe, single quote, @'@ pattern SINGLE_QUOTE :: Word8 pattern SINGLE_QUOTE = 0x27 -- | Left parenthesis, @(@ pattern LEFT_PAREN :: Word8 pattern LEFT_PAREN = 0x28 -- | Right parenthesis, @)@ pattern RIGHT_PAREN :: Word8 pattern RIGHT_PAREN = 0x29 -- | Asterisk, @*@ pattern ASTERISK :: Word8 pattern ASTERISK = 0x2a -- | Plus sign, @+@ pattern PLUS :: Word8 pattern PLUS = 0x2b -- | Comma, @,@ pattern COMMA :: Word8 pattern COMMA = 0x2c -- | Hyphen-minus, @-@ pattern HYPHEN :: Word8 pattern HYPHEN = 0x2d -- | Full stop, period, @.@ pattern PERIOD :: Word8 pattern PERIOD = 0x2e -- | Solidus, slash, @/@ pattern SLASH :: Word8 pattern SLASH = 0x2f ------------------------------------------------------------------------------- -- * Digits, x30-x39 ------------------------------------------------------------------------------- -- | Digit 0, @0@ pattern DIGIT_0 :: Word8 pattern DIGIT_0 = 0x30 -- | Digit 1, @1@ pattern DIGIT_1 :: Word8 pattern DIGIT_1 = 0x31 -- | Digit 2, @2@ pattern DIGIT_2 :: Word8 pattern DIGIT_2 = 0x32 -- | Digit 3, @3@ pattern DIGIT_3 :: Word8 pattern DIGIT_3 = 0x33 -- | Digit 4, @4@ pattern DIGIT_4 :: Word8 pattern DIGIT_4 = 0x34 -- | Digit 5, @5@ pattern DIGIT_5 :: Word8 pattern DIGIT_5 = 0x35 -- | Digit 6, @6@ pattern DIGIT_6 :: Word8 pattern DIGIT_6 = 0x36 -- | Digit 7, @7@ pattern DIGIT_7 :: Word8 pattern DIGIT_7 = 0x37 -- | Digit 8, @8@ pattern DIGIT_8 :: Word8 pattern DIGIT_8 = 0x38 -- | Digit 9, @9@ pattern DIGIT_9 :: Word8 pattern DIGIT_9 = 0x39 ------------------------------------------------------------------------------- -- * Symbols 2, x3a-x40 ------------------------------------------------------------------------------- -- | Colon, @:@ pattern COLON :: Word8 pattern COLON = 0x3a -- | Semicolon, @;@ pattern SEMICOLON :: Word8 pattern SEMICOLON = 0x3b -- | Less-than sign, @<@ pattern LESS :: Word8 pattern LESS = 0x3c -- | Equals sign, @=@ pattern EQUAL :: Word8 pattern EQUAL = 0x3d -- | Greater-than sign, @>@ pattern GREATER :: Word8 pattern GREATER = 0x3e -- | Question mark, @?@ pattern QUESTION :: Word8 pattern QUESTION = 0x3f -- | Commercial At, @\@@ pattern AT :: Word8 pattern AT = 0x40 ------------------------------------------------------------------------------- -- * Upper case letters, x41-x5a ------------------------------------------------------------------------------- -- | Latin small letter A, @A@ pattern UPPER_A :: Word8 pattern UPPER_A = 0x41 -- | Latin small letter B, @B@ pattern UPPER_B :: Word8 pattern UPPER_B = 0x42 -- | Latin small letter C, @C@ pattern UPPER_C :: Word8 pattern UPPER_C = 0x43 -- | Latin small letter D, @D@ pattern UPPER_D :: Word8 pattern UPPER_D = 0x44 -- | Latin small letter E, @E@ pattern UPPER_E :: Word8 pattern UPPER_E = 0x45 -- | Latin small letter F, @F@ pattern UPPER_F :: Word8 pattern UPPER_F = 0x46 -- | Latin small letter G, @G@ pattern UPPER_G :: Word8 pattern UPPER_G = 0x47 -- | Latin small letter H, @H@ pattern UPPER_H :: Word8 pattern UPPER_H = 0x48 -- | Latin small letter I, @I@ pattern UPPER_I :: Word8 pattern UPPER_I = 0x49 -- | Latin small letter J, @J@ pattern UPPER_J :: Word8 pattern UPPER_J = 0x4a -- | Latin small letter K, @K@ pattern UPPER_K :: Word8 pattern UPPER_K = 0x4b -- | Latin small letter L, @L@ pattern UPPER_L :: Word8 pattern UPPER_L = 0x4c -- | Latin small letter M, @M@ pattern UPPER_M :: Word8 pattern UPPER_M = 0x4d -- | Latin small letter N, @N@ pattern UPPER_N :: Word8 pattern UPPER_N = 0x4e -- | Latin small letter O, @O@ pattern UPPER_O :: Word8 pattern UPPER_O = 0x4f -- | Latin small letter P, @P@ pattern UPPER_P :: Word8 pattern UPPER_P = 0x50 -- | Latin small letter Q, @Q@ pattern UPPER_Q :: Word8 pattern UPPER_Q = 0x51 -- | Latin small letter R, @R@ pattern UPPER_R :: Word8 pattern UPPER_R = 0x52 -- | Latin small letter S, @S@ pattern UPPER_S :: Word8 pattern UPPER_S = 0x53 -- | Latin small letter T, @T@ pattern UPPER_T :: Word8 pattern UPPER_T = 0x54 -- | Latin small letter U, @U@ pattern UPPER_U :: Word8 pattern UPPER_U = 0x55 -- | Latin small letter V, @V@ pattern UPPER_V :: Word8 pattern UPPER_V = 0x56 -- | Latin small letter W, @W@ pattern UPPER_W :: Word8 pattern UPPER_W = 0x57 -- | Latin small letter X, @X@ pattern UPPER_X :: Word8 pattern UPPER_X = 0x58 -- | Latin small letter Y, @Y@ pattern UPPER_Y :: Word8 pattern UPPER_Y = 0x59 -- | Latin small letter Z, @Z@ pattern UPPER_Z :: Word8 pattern UPPER_Z = 0x5a ------------------------------------------------------------------------------- -- * Symbols 3, x5b-x60 ------------------------------------------------------------------------------- -- | Left square bracket, @[@ pattern LEFT_SQUARE :: Word8 pattern LEFT_SQUARE = 0x5b -- | Reverse solidus, backslash, @\\@ pattern BACKSLASH :: Word8 pattern BACKSLASH = 0x5c -- | Right square bracket, @]@ pattern RIGHT_SQUARE :: Word8 pattern RIGHT_SQUARE = 0x5d -- | Circumflex accent, @^@ pattern CIRCUM :: Word8 pattern CIRCUM = 0x5e -- | Low line, underscore, @_@ pattern UNDERSCORE :: Word8 pattern UNDERSCORE = 0x5f -- | Grave accent, @`@ pattern GRAVE :: Word8 pattern GRAVE = 0x60 ------------------------------------------------------------------------------- -- * Lower case letters, x61-x7a ------------------------------------------------------------------------------- -- | Latin small letter A, @a@ pattern LOWER_A :: Word8 pattern LOWER_A = 0x61 -- | Latin small letter B, @b@ pattern LOWER_B :: Word8 pattern LOWER_B = 0x62 -- | Latin small letter C, @c@ pattern LOWER_C :: Word8 pattern LOWER_C = 0x63 -- | Latin small letter D, @d@ pattern LOWER_D :: Word8 pattern LOWER_D = 0x64 -- | Latin small letter E, @e@ pattern LOWER_E :: Word8 pattern LOWER_E = 0x65 -- | Latin small letter F, @f@ pattern LOWER_F :: Word8 pattern LOWER_F = 0x66 -- | Latin small letter G, @g@ pattern LOWER_G :: Word8 pattern LOWER_G = 0x67 -- | Latin small letter H, @h@ pattern LOWER_H :: Word8 pattern LOWER_H = 0x68 -- | Latin small letter I, @i@ pattern LOWER_I :: Word8 pattern LOWER_I = 0x69 -- | Latin small letter J, @j@ pattern LOWER_J :: Word8 pattern LOWER_J = 0x6a -- | Latin small letter K, @k@ pattern LOWER_K :: Word8 pattern LOWER_K = 0x6b -- | Latin small letter L, @l@ pattern LOWER_L :: Word8 pattern LOWER_L = 0x6c -- | Latin small letter M, @m@ pattern LOWER_M :: Word8 pattern LOWER_M = 0x6d -- | Latin small letter N, @n@ pattern LOWER_N :: Word8 pattern LOWER_N = 0x6e -- | Latin small letter O, @o@ pattern LOWER_O :: Word8 pattern LOWER_O = 0x6f -- | Latin small letter P, @p@ pattern LOWER_P :: Word8 pattern LOWER_P = 0x70 -- | Latin small letter Q, @q@ pattern LOWER_Q :: Word8 pattern LOWER_Q = 0x71 -- | Latin small letter R, @r@ pattern LOWER_R :: Word8 pattern LOWER_R = 0x72 -- | Latin small letter S, @s@ pattern LOWER_S :: Word8 pattern LOWER_S = 0x73 -- | Latin small letter T, @t@ pattern LOWER_T :: Word8 pattern LOWER_T = 0x74 -- | Latin small letter U, @u@ pattern LOWER_U :: Word8 pattern LOWER_U = 0x75 -- | Latin small letter V, @v@ pattern LOWER_V :: Word8 pattern LOWER_V = 0x76 -- | Latin small letter W, @w@ pattern LOWER_W :: Word8 pattern LOWER_W = 0x77 -- | Latin small letter X, @x@ pattern LOWER_X :: Word8 pattern LOWER_X = 0x78 -- | Latin small letter Y, @y@ pattern LOWER_Y :: Word8 pattern LOWER_Y = 0x79 -- | Latin small letter Z, @z@ pattern LOWER_Z :: Word8 pattern LOWER_Z = 0x7a ------------------------------------------------------------------------------- -- * Symbols 5, x7b-x7f ------------------------------------------------------------------------------- -- | Left curly bracket, @{@ pattern LEFT_CURLY :: Word8 pattern LEFT_CURLY = 0x7b -- | Vertical line, vecrtical bar, @|@ pattern BAR :: Word8 pattern BAR = 0x7c -- | Right curly bracket, @}@ pattern RIGHT_CURLY :: Word8 pattern RIGHT_CURLY = 0x7d -- | Tilde, @~@ pattern TILDE :: Word8 pattern TILDE = 0x7e -- | Delete (DEL) pattern DEL :: Word8 pattern DEL = 0x7f character-ps-0.1/tests/0000755000000000000000000000000007346545000013261 5ustar0000000000000000character-ps-0.1/tests/character-ps-tests.hs0000644000000000000000000001505707346545000017341 0ustar0000000000000000module Main (main) where import Control.Monad (unless) import Data.Word (Word8, Word16) import qualified Data.Char.Patterns as C import qualified Data.Word8.Patterns as W8 import qualified Data.Word16.Patterns as W16 main :: IO () main = do print word8s unless (word8s == [0..127]) $ fail "something wrong" print word16s unless (word16s == [0..127]) $ fail "something wrong" print chars unless (chars == ['\NUL'..'\DEL']) $ fail "something wrong" word8s :: [Word8] word8s = [ W8.NUL , W8.SOH , W8.STX , W8.ETX , W8.EOT , W8.ENQ , W8.ACK , W8.BEL , W8.BS , W8.TAB , W8.LF , W8.VT , W8.FF , W8.CR , W8.SO , W8.SI , W8.DLE , W8.DC1 , W8.DC2 , W8.DC3 , W8.DC4 , W8.NAK , W8.SYN , W8.ETB , W8.CAN , W8.EOM , W8.SUB , W8.ESC , W8.FS , W8.GS , W8.RS , W8.US , W8.SPACE , W8.EXCLAM , W8.DOUBLE_QUOTE , W8.NUMBER , W8.DOLLAR , W8.PERCENT , W8.AMPERSAND , W8.SINGLE_QUOTE , W8.LEFT_PAREN , W8.RIGHT_PAREN , W8.ASTERISK , W8.PLUS , W8.COMMA , W8.HYPHEN , W8.PERIOD , W8.SLASH , W8.DIGIT_0 , W8.DIGIT_1 , W8.DIGIT_2 , W8.DIGIT_3 , W8.DIGIT_4 , W8.DIGIT_5 , W8.DIGIT_6 , W8.DIGIT_7 , W8.DIGIT_8 , W8.DIGIT_9 , W8.COLON , W8.SEMICOLON , W8.LESS , W8.EQUAL , W8.GREATER , W8.QUESTION , W8.AT , W8.UPPER_A , W8.UPPER_B , W8.UPPER_C , W8.UPPER_D , W8.UPPER_E , W8.UPPER_F , W8.UPPER_G , W8.UPPER_H , W8.UPPER_I , W8.UPPER_J , W8.UPPER_K , W8.UPPER_L , W8.UPPER_M , W8.UPPER_N , W8.UPPER_O , W8.UPPER_P , W8.UPPER_Q , W8.UPPER_R , W8.UPPER_S , W8.UPPER_T , W8.UPPER_U , W8.UPPER_V , W8.UPPER_W , W8.UPPER_X , W8.UPPER_Y , W8.UPPER_Z , W8.LEFT_SQUARE , W8.BACKSLASH , W8.RIGHT_SQUARE , W8.CIRCUM , W8.UNDERSCORE , W8.GRAVE , W8.LOWER_A , W8.LOWER_B , W8.LOWER_C , W8.LOWER_D , W8.LOWER_E , W8.LOWER_F , W8.LOWER_G , W8.LOWER_H , W8.LOWER_I , W8.LOWER_J , W8.LOWER_K , W8.LOWER_L , W8.LOWER_M , W8.LOWER_N , W8.LOWER_O , W8.LOWER_P , W8.LOWER_Q , W8.LOWER_R , W8.LOWER_S , W8.LOWER_T , W8.LOWER_U , W8.LOWER_V , W8.LOWER_W , W8.LOWER_X , W8.LOWER_Y , W8.LOWER_Z , W8.LEFT_CURLY , W8.BAR , W8.RIGHT_CURLY , W8.TILDE , W8.DEL ] word16s :: [Word16] word16s = [ W16.NUL , W16.SOH , W16.STX , W16.ETX , W16.EOT , W16.ENQ , W16.ACK , W16.BEL , W16.BS , W16.TAB , W16.LF , W16.VT , W16.FF , W16.CR , W16.SO , W16.SI , W16.DLE , W16.DC1 , W16.DC2 , W16.DC3 , W16.DC4 , W16.NAK , W16.SYN , W16.ETB , W16.CAN , W16.EOM , W16.SUB , W16.ESC , W16.FS , W16.GS , W16.RS , W16.US , W16.SPACE , W16.EXCLAM , W16.DOUBLE_QUOTE , W16.NUMBER , W16.DOLLAR , W16.PERCENT , W16.AMPERSAND , W16.SINGLE_QUOTE , W16.LEFT_PAREN , W16.RIGHT_PAREN , W16.ASTERISK , W16.PLUS , W16.COMMA , W16.HYPHEN , W16.PERIOD , W16.SLASH , W16.DIGIT_0 , W16.DIGIT_1 , W16.DIGIT_2 , W16.DIGIT_3 , W16.DIGIT_4 , W16.DIGIT_5 , W16.DIGIT_6 , W16.DIGIT_7 , W16.DIGIT_8 , W16.DIGIT_9 , W16.COLON , W16.SEMICOLON , W16.LESS , W16.EQUAL , W16.GREATER , W16.QUESTION , W16.AT , W16.UPPER_A , W16.UPPER_B , W16.UPPER_C , W16.UPPER_D , W16.UPPER_E , W16.UPPER_F , W16.UPPER_G , W16.UPPER_H , W16.UPPER_I , W16.UPPER_J , W16.UPPER_K , W16.UPPER_L , W16.UPPER_M , W16.UPPER_N , W16.UPPER_O , W16.UPPER_P , W16.UPPER_Q , W16.UPPER_R , W16.UPPER_S , W16.UPPER_T , W16.UPPER_U , W16.UPPER_V , W16.UPPER_W , W16.UPPER_X , W16.UPPER_Y , W16.UPPER_Z , W16.LEFT_SQUARE , W16.BACKSLASH , W16.RIGHT_SQUARE , W16.CIRCUM , W16.UNDERSCORE , W16.GRAVE , W16.LOWER_A , W16.LOWER_B , W16.LOWER_C , W16.LOWER_D , W16.LOWER_E , W16.LOWER_F , W16.LOWER_G , W16.LOWER_H , W16.LOWER_I , W16.LOWER_J , W16.LOWER_K , W16.LOWER_L , W16.LOWER_M , W16.LOWER_N , W16.LOWER_O , W16.LOWER_P , W16.LOWER_Q , W16.LOWER_R , W16.LOWER_S , W16.LOWER_T , W16.LOWER_U , W16.LOWER_V , W16.LOWER_W , W16.LOWER_X , W16.LOWER_Y , W16.LOWER_Z , W16.LEFT_CURLY , W16.BAR , W16.RIGHT_CURLY , W16.TILDE , W16.DEL ] chars :: [Char] chars = [ C.NUL , C.SOH , C.STX , C.ETX , C.EOT , C.ENQ , C.ACK , C.BEL , C.BS , C.TAB , C.LF , C.VT , C.FF , C.CR , C.SO , C.SI , C.DLE , C.DC1 , C.DC2 , C.DC3 , C.DC4 , C.NAK , C.SYN , C.ETB , C.CAN , C.EOM , C.SUB , C.ESC , C.FS , C.GS , C.RS , C.US , C.SPACE , C.EXCLAM , C.DOUBLE_QUOTE , C.NUMBER , C.DOLLAR , C.PERCENT , C.AMPERSAND , C.SINGLE_QUOTE , C.LEFT_PAREN , C.RIGHT_PAREN , C.ASTERISK , C.PLUS , C.COMMA , C.HYPHEN , C.PERIOD , C.SLASH , C.DIGIT_0 , C.DIGIT_1 , C.DIGIT_2 , C.DIGIT_3 , C.DIGIT_4 , C.DIGIT_5 , C.DIGIT_6 , C.DIGIT_7 , C.DIGIT_8 , C.DIGIT_9 , C.COLON , C.SEMICOLON , C.LESS , C.EQUAL , C.GREATER , C.QUESTION , C.AT , C.UPPER_A , C.UPPER_B , C.UPPER_C , C.UPPER_D , C.UPPER_E , C.UPPER_F , C.UPPER_G , C.UPPER_H , C.UPPER_I , C.UPPER_J , C.UPPER_K , C.UPPER_L , C.UPPER_M , C.UPPER_N , C.UPPER_O , C.UPPER_P , C.UPPER_Q , C.UPPER_R , C.UPPER_S , C.UPPER_T , C.UPPER_U , C.UPPER_V , C.UPPER_W , C.UPPER_X , C.UPPER_Y , C.UPPER_Z , C.LEFT_SQUARE , C.BACKSLASH , C.RIGHT_SQUARE , C.CIRCUM , C.UNDERSCORE , C.GRAVE , C.LOWER_A , C.LOWER_B , C.LOWER_C , C.LOWER_D , C.LOWER_E , C.LOWER_F , C.LOWER_G , C.LOWER_H , C.LOWER_I , C.LOWER_J , C.LOWER_K , C.LOWER_L , C.LOWER_M , C.LOWER_N , C.LOWER_O , C.LOWER_P , C.LOWER_Q , C.LOWER_R , C.LOWER_S , C.LOWER_T , C.LOWER_U , C.LOWER_V , C.LOWER_W , C.LOWER_X , C.LOWER_Y , C.LOWER_Z , C.LEFT_CURLY , C.BAR , C.RIGHT_CURLY , C.TILDE , C.DEL ]