{-# OPTIONS -fvia-C #-} module Data.Char.Properties.MiscData where { import Data.Char.Properties.PrivateData; import Data.Word; import Prelude; -- Data getCombiningClass :: Char -> Word8; getCombiningClass '\x0300' = 230; getCombiningClass '\x0301' = 230; getCombiningClass '\x0302' = 230; getCombiningClass '\x0303' = 230; getCombiningClass '\x0304' = 230; getCombiningClass '\x0305' = 230; getCombiningClass '\x0306' = 230; getCombiningClass '\x0307' = 230; getCombiningClass '\x0308' = 230; getCombiningClass '\x0309' = 230; getCombiningClass '\x030A' = 230; getCombiningClass '\x030B' = 230; getCombiningClass '\x030C' = 230; getCombiningClass '\x030D' = 230; getCombiningClass '\x030E' = 230; getCombiningClass '\x030F' = 230; getCombiningClass '\x0310' = 230; getCombiningClass '\x0311' = 230; getCombiningClass '\x0312' = 230; getCombiningClass '\x0313' = 230; getCombiningClass '\x0314' = 230; getCombiningClass '\x0315' = 232; getCombiningClass '\x0316' = 220; getCombiningClass '\x0317' = 220; getCombiningClass '\x0318' = 220; getCombiningClass '\x0319' = 220; getCombiningClass '\x031A' = 232; getCombiningClass '\x031B' = 216; getCombiningClass '\x031C' = 220; getCombiningClass '\x031D' = 220; getCombiningClass '\x031E' = 220; getCombiningClass '\x031F' = 220; getCombiningClass '\x0320' = 220; getCombiningClass '\x0321' = 202; getCombiningClass '\x0322' = 202; getCombiningClass '\x0323' = 220; getCombiningClass '\x0324' = 220; getCombiningClass '\x0325' = 220; getCombiningClass '\x0326' = 220; getCombiningClass '\x0327' = 202; getCombiningClass '\x0328' = 202; getCombiningClass '\x0329' = 220; getCombiningClass '\x032A' = 220; getCombiningClass '\x032B' = 220; getCombiningClass '\x032C' = 220; getCombiningClass '\x032D' = 220; getCombiningClass '\x032E' = 220; getCombiningClass '\x032F' = 220; getCombiningClass '\x0330' = 220; getCombiningClass '\x0331' = 220; getCombiningClass '\x0332' = 220; getCombiningClass '\x0333' = 220; getCombiningClass '\x0334' = 1; getCombiningClass '\x0335' = 1; getCombiningClass '\x0336' = 1; getCombiningClass '\x0337' = 1; getCombiningClass '\x0338' = 1; getCombiningClass '\x0339' = 220; getCombiningClass '\x033A' = 220; getCombiningClass '\x033B' = 220; getCombiningClass '\x033C' = 220; getCombiningClass '\x033D' = 230; getCombiningClass '\x033E' = 230; getCombiningClass '\x033F' = 230; getCombiningClass '\x0340' = 230; getCombiningClass '\x0341' = 230; getCombiningClass '\x0342' = 230; getCombiningClass '\x0343' = 230; getCombiningClass '\x0344' = 230; getCombiningClass '\x0345' = 240; getCombiningClass '\x0346' = 230; getCombiningClass '\x0347' = 220; getCombiningClass '\x0348' = 220; getCombiningClass '\x0349' = 220; getCombiningClass '\x034A' = 230; getCombiningClass '\x034B' = 230; getCombiningClass '\x034C' = 230; getCombiningClass '\x034D' = 220; getCombiningClass '\x034E' = 220; getCombiningClass '\x0360' = 234; getCombiningClass '\x0361' = 234; getCombiningClass '\x0362' = 233; getCombiningClass '\x0363' = 230; getCombiningClass '\x0364' = 230; getCombiningClass '\x0365' = 230; getCombiningClass '\x0366' = 230; getCombiningClass '\x0367' = 230; getCombiningClass '\x0368' = 230; getCombiningClass '\x0369' = 230; getCombiningClass '\x036A' = 230; getCombiningClass '\x036B' = 230; getCombiningClass '\x036C' = 230; getCombiningClass '\x036D' = 230; getCombiningClass '\x036E' = 230; getCombiningClass '\x036F' = 230; getCombiningClass '\x0483' = 230; getCombiningClass '\x0484' = 230; getCombiningClass '\x0485' = 230; getCombiningClass '\x0486' = 230; getCombiningClass '\x0591' = 220; getCombiningClass '\x0592' = 230; getCombiningClass '\x0593' = 230; getCombiningClass '\x0594' = 230; getCombiningClass '\x0595' = 230; getCombiningClass '\x0596' = 220; getCombiningClass '\x0597' = 230; getCombiningClass '\x0598' = 230; getCombiningClass '\x0599' = 230; getCombiningClass '\x059A' = 222; getCombiningClass '\x059B' = 220; getCombiningClass '\x059C' = 230; getCombiningClass '\x059D' = 230; getCombiningClass '\x059E' = 230; getCombiningClass '\x059F' = 230; getCombiningClass '\x05A0' = 230; getCombiningClass '\x05A1' = 230; getCombiningClass '\x05A3' = 220; getCombiningClass '\x05A4' = 220; getCombiningClass '\x05A5' = 220; getCombiningClass '\x05A6' = 220; getCombiningClass '\x05A7' = 220; getCombiningClass '\x05A8' = 230; getCombiningClass '\x05A9' = 230; getCombiningClass '\x05AA' = 220; getCombiningClass '\x05AB' = 230; getCombiningClass '\x05AC' = 230; getCombiningClass '\x05AD' = 222; getCombiningClass '\x05AE' = 228; getCombiningClass '\x05AF' = 230; getCombiningClass '\x05B0' = 10; getCombiningClass '\x05B1' = 11; getCombiningClass '\x05B2' = 12; getCombiningClass '\x05B3' = 13; getCombiningClass '\x05B4' = 14; getCombiningClass '\x05B5' = 15; getCombiningClass '\x05B6' = 16; getCombiningClass '\x05B7' = 17; getCombiningClass '\x05B8' = 18; getCombiningClass '\x05B9' = 19; getCombiningClass '\x05BB' = 20; getCombiningClass '\x05BC' = 21; getCombiningClass '\x05BD' = 22; getCombiningClass '\x05BF' = 23; getCombiningClass '\x05C1' = 24; getCombiningClass '\x05C2' = 25; getCombiningClass '\x05C4' = 230; getCombiningClass '\x064B' = 27; getCombiningClass '\x064C' = 28; getCombiningClass '\x064D' = 29; getCombiningClass '\x064E' = 30; getCombiningClass '\x064F' = 31; getCombiningClass '\x0650' = 32; getCombiningClass '\x0651' = 33; getCombiningClass '\x0652' = 34; getCombiningClass '\x0653' = 230; getCombiningClass '\x0654' = 230; getCombiningClass '\x0655' = 220; getCombiningClass '\x0670' = 35; getCombiningClass '\x06D6' = 230; getCombiningClass '\x06D7' = 230; getCombiningClass '\x06D8' = 230; getCombiningClass '\x06D9' = 230; getCombiningClass '\x06DA' = 230; getCombiningClass '\x06DB' = 230; getCombiningClass '\x06DC' = 230; getCombiningClass '\x06DF' = 230; getCombiningClass '\x06E0' = 230; getCombiningClass '\x06E1' = 230; getCombiningClass '\x06E2' = 230; getCombiningClass '\x06E3' = 220; getCombiningClass '\x06E4' = 230; getCombiningClass '\x06E7' = 230; getCombiningClass '\x06E8' = 230; getCombiningClass '\x06EA' = 220; getCombiningClass '\x06EB' = 230; getCombiningClass '\x06EC' = 230; getCombiningClass '\x06ED' = 220; getCombiningClass '\x0711' = 36; getCombiningClass '\x0730' = 230; getCombiningClass '\x0731' = 220; getCombiningClass '\x0732' = 230; getCombiningClass '\x0733' = 230; getCombiningClass '\x0734' = 220; getCombiningClass '\x0735' = 230; getCombiningClass '\x0736' = 230; getCombiningClass '\x0737' = 220; getCombiningClass '\x0738' = 220; getCombiningClass '\x0739' = 220; getCombiningClass '\x073A' = 230; getCombiningClass '\x073B' = 220; getCombiningClass '\x073C' = 220; getCombiningClass '\x073D' = 230; getCombiningClass '\x073E' = 220; getCombiningClass '\x073F' = 230; getCombiningClass '\x0740' = 230; getCombiningClass '\x0741' = 230; getCombiningClass '\x0742' = 220; getCombiningClass '\x0743' = 230; getCombiningClass '\x0744' = 220; getCombiningClass '\x0745' = 230; getCombiningClass '\x0746' = 220; getCombiningClass '\x0747' = 230; getCombiningClass '\x0748' = 220; getCombiningClass '\x0749' = 230; getCombiningClass '\x074A' = 230; getCombiningClass '\x093C' = 7; getCombiningClass '\x094D' = 9; getCombiningClass '\x0951' = 230; getCombiningClass '\x0952' = 220; getCombiningClass '\x0953' = 230; getCombiningClass '\x0954' = 230; getCombiningClass '\x09BC' = 7; getCombiningClass '\x09CD' = 9; getCombiningClass '\x0A3C' = 7; getCombiningClass '\x0A4D' = 9; getCombiningClass '\x0ABC' = 7; getCombiningClass '\x0ACD' = 9; getCombiningClass '\x0B3C' = 7; getCombiningClass '\x0B4D' = 9; getCombiningClass '\x0BCD' = 9; getCombiningClass '\x0C4D' = 9; getCombiningClass '\x0C55' = 84; getCombiningClass '\x0C56' = 91; getCombiningClass '\x0CCD' = 9; getCombiningClass '\x0D4D' = 9; getCombiningClass '\x0DCA' = 9; getCombiningClass '\x0E38' = 103; getCombiningClass '\x0E39' = 103; getCombiningClass '\x0E3A' = 9; getCombiningClass '\x0E48' = 107; getCombiningClass '\x0E49' = 107; getCombiningClass '\x0E4A' = 107; getCombiningClass '\x0E4B' = 107; getCombiningClass '\x0EB8' = 118; getCombiningClass '\x0EB9' = 118; getCombiningClass '\x0EC8' = 122; getCombiningClass '\x0EC9' = 122; getCombiningClass '\x0ECA' = 122; getCombiningClass '\x0ECB' = 122; getCombiningClass '\x0F18' = 220; getCombiningClass '\x0F19' = 220; getCombiningClass '\x0F35' = 220; getCombiningClass '\x0F37' = 220; getCombiningClass '\x0F39' = 216; getCombiningClass '\x0F71' = 129; getCombiningClass '\x0F72' = 130; getCombiningClass '\x0F74' = 132; getCombiningClass '\x0F7A' = 130; getCombiningClass '\x0F7B' = 130; getCombiningClass '\x0F7C' = 130; getCombiningClass '\x0F7D' = 130; getCombiningClass '\x0F80' = 130; getCombiningClass '\x0F82' = 230; getCombiningClass '\x0F83' = 230; getCombiningClass '\x0F84' = 9; getCombiningClass '\x0F86' = 230; getCombiningClass '\x0F87' = 230; getCombiningClass '\x0FC6' = 220; getCombiningClass '\x1037' = 7; getCombiningClass '\x1039' = 9; getCombiningClass '\x1714' = 9; getCombiningClass '\x1734' = 9; getCombiningClass '\x17D2' = 9; getCombiningClass '\x18A9' = 228; getCombiningClass '\x20D0' = 230; getCombiningClass '\x20D1' = 230; getCombiningClass '\x20D2' = 1; getCombiningClass '\x20D3' = 1; getCombiningClass '\x20D4' = 230; getCombiningClass '\x20D5' = 230; getCombiningClass '\x20D6' = 230; getCombiningClass '\x20D7' = 230; getCombiningClass '\x20D8' = 1; getCombiningClass '\x20D9' = 1; getCombiningClass '\x20DA' = 1; getCombiningClass '\x20DB' = 230; getCombiningClass '\x20DC' = 230; getCombiningClass '\x20E1' = 230; getCombiningClass '\x20E5' = 1; getCombiningClass '\x20E6' = 1; getCombiningClass '\x20E7' = 230; getCombiningClass '\x20E8' = 220; getCombiningClass '\x20E9' = 230; getCombiningClass '\x20EA' = 1; getCombiningClass '\x302A' = 218; getCombiningClass '\x302B' = 228; getCombiningClass '\x302C' = 232; getCombiningClass '\x302D' = 222; getCombiningClass '\x302E' = 224; getCombiningClass '\x302F' = 224; getCombiningClass '\x3099' = 8; getCombiningClass '\x309A' = 8; getCombiningClass '\xFB1E' = 26; getCombiningClass '\xFE20' = 230; getCombiningClass '\xFE21' = 230; getCombiningClass '\xFE22' = 230; getCombiningClass '\xFE23' = 230; getCombiningClass '\x1D165' = 216; getCombiningClass '\x1D166' = 216; getCombiningClass '\x1D167' = 1; getCombiningClass '\x1D168' = 1; getCombiningClass '\x1D169' = 1; getCombiningClass '\x1D16D' = 226; getCombiningClass '\x1D16E' = 216; getCombiningClass '\x1D16F' = 216; getCombiningClass '\x1D170' = 216; getCombiningClass '\x1D171' = 216; getCombiningClass '\x1D172' = 216; getCombiningClass '\x1D17B' = 220; getCombiningClass '\x1D17C' = 220; getCombiningClass '\x1D17D' = 220; getCombiningClass '\x1D17E' = 220; getCombiningClass '\x1D17F' = 220; getCombiningClass '\x1D180' = 220; getCombiningClass '\x1D181' = 220; getCombiningClass '\x1D182' = 220; getCombiningClass '\x1D185' = 230; getCombiningClass '\x1D186' = 230; getCombiningClass '\x1D187' = 230; getCombiningClass '\x1D188' = 230; getCombiningClass '\x1D189' = 230; getCombiningClass '\x1D18A' = 220; getCombiningClass '\x1D18B' = 220; getCombiningClass '\x1D1AA' = 230; getCombiningClass '\x1D1AB' = 230; getCombiningClass '\x1D1AC' = 230; getCombiningClass '\x1D1AD' = 230; getCombiningClass c = handleOmittedRange 0 getCombiningClass c; getDecimalDigit :: Char -> Maybe Word8; getDecimalDigit '\x0030' = Just 0; getDecimalDigit '\x0031' = Just 1; getDecimalDigit '\x0032' = Just 2; getDecimalDigit '\x0033' = Just 3; getDecimalDigit '\x0034' = Just 4; getDecimalDigit '\x0035' = Just 5; getDecimalDigit '\x0036' = Just 6; getDecimalDigit '\x0037' = Just 7; getDecimalDigit '\x0038' = Just 8; getDecimalDigit '\x0039' = Just 9; getDecimalDigit '\x00B2' = Just 2; getDecimalDigit '\x00B3' = Just 3; getDecimalDigit '\x00B9' = Just 1; getDecimalDigit '\x0660' = Just 0; getDecimalDigit '\x0661' = Just 1; getDecimalDigit '\x0662' = Just 2; getDecimalDigit '\x0663' = Just 3; getDecimalDigit '\x0664' = Just 4; getDecimalDigit '\x0665' = Just 5; getDecimalDigit '\x0666' = Just 6; getDecimalDigit '\x0667' = Just 7; getDecimalDigit '\x0668' = Just 8; getDecimalDigit '\x0669' = Just 9; getDecimalDigit '\x06F0' = Just 0; getDecimalDigit '\x06F1' = Just 1; getDecimalDigit '\x06F2' = Just 2; getDecimalDigit '\x06F3' = Just 3; getDecimalDigit '\x06F4' = Just 4; getDecimalDigit '\x06F5' = Just 5; getDecimalDigit '\x06F6' = Just 6; getDecimalDigit '\x06F7' = Just 7; getDecimalDigit '\x06F8' = Just 8; getDecimalDigit '\x06F9' = Just 9; getDecimalDigit '\x0966' = Just 0; getDecimalDigit '\x0967' = Just 1; getDecimalDigit '\x0968' = Just 2; getDecimalDigit '\x0969' = Just 3; getDecimalDigit '\x096A' = Just 4; getDecimalDigit '\x096B' = Just 5; getDecimalDigit '\x096C' = Just 6; getDecimalDigit '\x096D' = Just 7; getDecimalDigit '\x096E' = Just 8; getDecimalDigit '\x096F' = Just 9; getDecimalDigit '\x09E6' = Just 0; getDecimalDigit '\x09E7' = Just 1; getDecimalDigit '\x09E8' = Just 2; getDecimalDigit '\x09E9' = Just 3; getDecimalDigit '\x09EA' = Just 4; getDecimalDigit '\x09EB' = Just 5; getDecimalDigit '\x09EC' = Just 6; getDecimalDigit '\x09ED' = Just 7; getDecimalDigit '\x09EE' = Just 8; getDecimalDigit '\x09EF' = Just 9; getDecimalDigit '\x0A66' = Just 0; getDecimalDigit '\x0A67' = Just 1; getDecimalDigit '\x0A68' = Just 2; getDecimalDigit '\x0A69' = Just 3; getDecimalDigit '\x0A6A' = Just 4; getDecimalDigit '\x0A6B' = Just 5; getDecimalDigit '\x0A6C' = Just 6; getDecimalDigit '\x0A6D' = Just 7; getDecimalDigit '\x0A6E' = Just 8; getDecimalDigit '\x0A6F' = Just 9; getDecimalDigit '\x0AE6' = Just 0; getDecimalDigit '\x0AE7' = Just 1; getDecimalDigit '\x0AE8' = Just 2; getDecimalDigit '\x0AE9' = Just 3; getDecimalDigit '\x0AEA' = Just 4; getDecimalDigit '\x0AEB' = Just 5; getDecimalDigit '\x0AEC' = Just 6; getDecimalDigit '\x0AED' = Just 7; getDecimalDigit '\x0AEE' = Just 8; getDecimalDigit '\x0AEF' = Just 9; getDecimalDigit '\x0B66' = Just 0; getDecimalDigit '\x0B67' = Just 1; getDecimalDigit '\x0B68' = Just 2; getDecimalDigit '\x0B69' = Just 3; getDecimalDigit '\x0B6A' = Just 4; getDecimalDigit '\x0B6B' = Just 5; getDecimalDigit '\x0B6C' = Just 6; getDecimalDigit '\x0B6D' = Just 7; getDecimalDigit '\x0B6E' = Just 8; getDecimalDigit '\x0B6F' = Just 9; getDecimalDigit '\x0BE7' = Just 1; getDecimalDigit '\x0BE8' = Just 2; getDecimalDigit '\x0BE9' = Just 3; getDecimalDigit '\x0BEA' = Just 4; getDecimalDigit '\x0BEB' = Just 5; getDecimalDigit '\x0BEC' = Just 6; getDecimalDigit '\x0BED' = Just 7; getDecimalDigit '\x0BEE' = Just 8; getDecimalDigit '\x0BEF' = Just 9; getDecimalDigit '\x0C66' = Just 0; getDecimalDigit '\x0C67' = Just 1; getDecimalDigit '\x0C68' = Just 2; getDecimalDigit '\x0C69' = Just 3; getDecimalDigit '\x0C6A' = Just 4; getDecimalDigit '\x0C6B' = Just 5; getDecimalDigit '\x0C6C' = Just 6; getDecimalDigit '\x0C6D' = Just 7; getDecimalDigit '\x0C6E' = Just 8; getDecimalDigit '\x0C6F' = Just 9; getDecimalDigit '\x0CE6' = Just 0; getDecimalDigit '\x0CE7' = Just 1; getDecimalDigit '\x0CE8' = Just 2; getDecimalDigit '\x0CE9' = Just 3; getDecimalDigit '\x0CEA' = Just 4; getDecimalDigit '\x0CEB' = Just 5; getDecimalDigit '\x0CEC' = Just 6; getDecimalDigit '\x0CED' = Just 7; getDecimalDigit '\x0CEE' = Just 8; getDecimalDigit '\x0CEF' = Just 9; getDecimalDigit '\x0D66' = Just 0; getDecimalDigit '\x0D67' = Just 1; getDecimalDigit '\x0D68' = Just 2; getDecimalDigit '\x0D69' = Just 3; getDecimalDigit '\x0D6A' = Just 4; getDecimalDigit '\x0D6B' = Just 5; getDecimalDigit '\x0D6C' = Just 6; getDecimalDigit '\x0D6D' = Just 7; getDecimalDigit '\x0D6E' = Just 8; getDecimalDigit '\x0D6F' = Just 9; getDecimalDigit '\x0E50' = Just 0; getDecimalDigit '\x0E51' = Just 1; getDecimalDigit '\x0E52' = Just 2; getDecimalDigit '\x0E53' = Just 3; getDecimalDigit '\x0E54' = Just 4; getDecimalDigit '\x0E55' = Just 5; getDecimalDigit '\x0E56' = Just 6; getDecimalDigit '\x0E57' = Just 7; getDecimalDigit '\x0E58' = Just 8; getDecimalDigit '\x0E59' = Just 9; getDecimalDigit '\x0ED0' = Just 0; getDecimalDigit '\x0ED1' = Just 1; getDecimalDigit '\x0ED2' = Just 2; getDecimalDigit '\x0ED3' = Just 3; getDecimalDigit '\x0ED4' = Just 4; getDecimalDigit '\x0ED5' = Just 5; getDecimalDigit '\x0ED6' = Just 6; getDecimalDigit '\x0ED7' = Just 7; getDecimalDigit '\x0ED8' = Just 8; getDecimalDigit '\x0ED9' = Just 9; getDecimalDigit '\x0F20' = Just 0; getDecimalDigit '\x0F21' = Just 1; getDecimalDigit '\x0F22' = Just 2; getDecimalDigit '\x0F23' = Just 3; getDecimalDigit '\x0F24' = Just 4; getDecimalDigit '\x0F25' = Just 5; getDecimalDigit '\x0F26' = Just 6; getDecimalDigit '\x0F27' = Just 7; getDecimalDigit '\x0F28' = Just 8; getDecimalDigit '\x0F29' = Just 9; getDecimalDigit '\x1040' = Just 0; getDecimalDigit '\x1041' = Just 1; getDecimalDigit '\x1042' = Just 2; getDecimalDigit '\x1043' = Just 3; getDecimalDigit '\x1044' = Just 4; getDecimalDigit '\x1045' = Just 5; getDecimalDigit '\x1046' = Just 6; getDecimalDigit '\x1047' = Just 7; getDecimalDigit '\x1048' = Just 8; getDecimalDigit '\x1049' = Just 9; getDecimalDigit '\x1369' = Just 1; getDecimalDigit '\x136A' = Just 2; getDecimalDigit '\x136B' = Just 3; getDecimalDigit '\x136C' = Just 4; getDecimalDigit '\x136D' = Just 5; getDecimalDigit '\x136E' = Just 6; getDecimalDigit '\x136F' = Just 7; getDecimalDigit '\x1370' = Just 8; getDecimalDigit '\x1371' = Just 9; getDecimalDigit '\x17E0' = Just 0; getDecimalDigit '\x17E1' = Just 1; getDecimalDigit '\x17E2' = Just 2; getDecimalDigit '\x17E3' = Just 3; getDecimalDigit '\x17E4' = Just 4; getDecimalDigit '\x17E5' = Just 5; getDecimalDigit '\x17E6' = Just 6; getDecimalDigit '\x17E7' = Just 7; getDecimalDigit '\x17E8' = Just 8; getDecimalDigit '\x17E9' = Just 9; getDecimalDigit '\x1810' = Just 0; getDecimalDigit '\x1811' = Just 1; getDecimalDigit '\x1812' = Just 2; getDecimalDigit '\x1813' = Just 3; getDecimalDigit '\x1814' = Just 4; getDecimalDigit '\x1815' = Just 5; getDecimalDigit '\x1816' = Just 6; getDecimalDigit '\x1817' = Just 7; getDecimalDigit '\x1818' = Just 8; getDecimalDigit '\x1819' = Just 9; getDecimalDigit '\x2070' = Just 0; getDecimalDigit '\x2074' = Just 4; getDecimalDigit '\x2075' = Just 5; getDecimalDigit '\x2076' = Just 6; getDecimalDigit '\x2077' = Just 7; getDecimalDigit '\x2078' = Just 8; getDecimalDigit '\x2079' = Just 9; getDecimalDigit '\x2080' = Just 0; getDecimalDigit '\x2081' = Just 1; getDecimalDigit '\x2082' = Just 2; getDecimalDigit '\x2083' = Just 3; getDecimalDigit '\x2084' = Just 4; getDecimalDigit '\x2085' = Just 5; getDecimalDigit '\x2086' = Just 6; getDecimalDigit '\x2087' = Just 7; getDecimalDigit '\x2088' = Just 8; getDecimalDigit '\x2089' = Just 9; getDecimalDigit '\xFF10' = Just 0; getDecimalDigit '\xFF11' = Just 1; getDecimalDigit '\xFF12' = Just 2; getDecimalDigit '\xFF13' = Just 3; getDecimalDigit '\xFF14' = Just 4; getDecimalDigit '\xFF15' = Just 5; getDecimalDigit '\xFF16' = Just 6; getDecimalDigit '\xFF17' = Just 7; getDecimalDigit '\xFF18' = Just 8; getDecimalDigit '\xFF19' = Just 9; getDecimalDigit '\x1D7CE' = Just 0; getDecimalDigit '\x1D7CF' = Just 1; getDecimalDigit '\x1D7D0' = Just 2; getDecimalDigit '\x1D7D1' = Just 3; getDecimalDigit '\x1D7D2' = Just 4; getDecimalDigit '\x1D7D3' = Just 5; getDecimalDigit '\x1D7D4' = Just 6; getDecimalDigit '\x1D7D5' = Just 7; getDecimalDigit '\x1D7D6' = Just 8; getDecimalDigit '\x1D7D7' = Just 9; getDecimalDigit '\x1D7D8' = Just 0; getDecimalDigit '\x1D7D9' = Just 1; getDecimalDigit '\x1D7DA' = Just 2; getDecimalDigit '\x1D7DB' = Just 3; getDecimalDigit '\x1D7DC' = Just 4; getDecimalDigit '\x1D7DD' = Just 5; getDecimalDigit '\x1D7DE' = Just 6; getDecimalDigit '\x1D7DF' = Just 7; getDecimalDigit '\x1D7E0' = Just 8; getDecimalDigit '\x1D7E1' = Just 9; getDecimalDigit '\x1D7E2' = Just 0; getDecimalDigit '\x1D7E3' = Just 1; getDecimalDigit '\x1D7E4' = Just 2; getDecimalDigit '\x1D7E5' = Just 3; getDecimalDigit '\x1D7E6' = Just 4; getDecimalDigit '\x1D7E7' = Just 5; getDecimalDigit '\x1D7E8' = Just 6; getDecimalDigit '\x1D7E9' = Just 7; getDecimalDigit '\x1D7EA' = Just 8; getDecimalDigit '\x1D7EB' = Just 9; getDecimalDigit '\x1D7EC' = Just 0; getDecimalDigit '\x1D7ED' = Just 1; getDecimalDigit '\x1D7EE' = Just 2; getDecimalDigit '\x1D7EF' = Just 3; getDecimalDigit '\x1D7F0' = Just 4; getDecimalDigit '\x1D7F1' = Just 5; getDecimalDigit '\x1D7F2' = Just 6; getDecimalDigit '\x1D7F3' = Just 7; getDecimalDigit '\x1D7F4' = Just 8; getDecimalDigit '\x1D7F5' = Just 9; getDecimalDigit '\x1D7F6' = Just 0; getDecimalDigit '\x1D7F7' = Just 1; getDecimalDigit '\x1D7F8' = Just 2; getDecimalDigit '\x1D7F9' = Just 3; getDecimalDigit '\x1D7FA' = Just 4; getDecimalDigit '\x1D7FB' = Just 5; getDecimalDigit '\x1D7FC' = Just 6; getDecimalDigit '\x1D7FD' = Just 7; getDecimalDigit '\x1D7FE' = Just 8; getDecimalDigit '\x1D7FF' = Just 9; getDecimalDigit c = handleOmittedRange Nothing getDecimalDigit c; getDigit :: Char -> Maybe Word8; getDigit '\x0030' = Just 0; getDigit '\x0031' = Just 1; getDigit '\x0032' = Just 2; getDigit '\x0033' = Just 3; getDigit '\x0034' = Just 4; getDigit '\x0035' = Just 5; getDigit '\x0036' = Just 6; getDigit '\x0037' = Just 7; getDigit '\x0038' = Just 8; getDigit '\x0039' = Just 9; getDigit '\x00B2' = Just 2; getDigit '\x00B3' = Just 3; getDigit '\x00B9' = Just 1; getDigit '\x0660' = Just 0; getDigit '\x0661' = Just 1; getDigit '\x0662' = Just 2; getDigit '\x0663' = Just 3; getDigit '\x0664' = Just 4; getDigit '\x0665' = Just 5; getDigit '\x0666' = Just 6; getDigit '\x0667' = Just 7; getDigit '\x0668' = Just 8; getDigit '\x0669' = Just 9; getDigit '\x06F0' = Just 0; getDigit '\x06F1' = Just 1; getDigit '\x06F2' = Just 2; getDigit '\x06F3' = Just 3; getDigit '\x06F4' = Just 4; getDigit '\x06F5' = Just 5; getDigit '\x06F6' = Just 6; getDigit '\x06F7' = Just 7; getDigit '\x06F8' = Just 8; getDigit '\x06F9' = Just 9; getDigit '\x0966' = Just 0; getDigit '\x0967' = Just 1; getDigit '\x0968' = Just 2; getDigit '\x0969' = Just 3; getDigit '\x096A' = Just 4; getDigit '\x096B' = Just 5; getDigit '\x096C' = Just 6; getDigit '\x096D' = Just 7; getDigit '\x096E' = Just 8; getDigit '\x096F' = Just 9; getDigit '\x09E6' = Just 0; getDigit '\x09E7' = Just 1; getDigit '\x09E8' = Just 2; getDigit '\x09E9' = Just 3; getDigit '\x09EA' = Just 4; getDigit '\x09EB' = Just 5; getDigit '\x09EC' = Just 6; getDigit '\x09ED' = Just 7; getDigit '\x09EE' = Just 8; getDigit '\x09EF' = Just 9; getDigit '\x0A66' = Just 0; getDigit '\x0A67' = Just 1; getDigit '\x0A68' = Just 2; getDigit '\x0A69' = Just 3; getDigit '\x0A6A' = Just 4; getDigit '\x0A6B' = Just 5; getDigit '\x0A6C' = Just 6; getDigit '\x0A6D' = Just 7; getDigit '\x0A6E' = Just 8; getDigit '\x0A6F' = Just 9; getDigit '\x0AE6' = Just 0; getDigit '\x0AE7' = Just 1; getDigit '\x0AE8' = Just 2; getDigit '\x0AE9' = Just 3; getDigit '\x0AEA' = Just 4; getDigit '\x0AEB' = Just 5; getDigit '\x0AEC' = Just 6; getDigit '\x0AED' = Just 7; getDigit '\x0AEE' = Just 8; getDigit '\x0AEF' = Just 9; getDigit '\x0B66' = Just 0; getDigit '\x0B67' = Just 1; getDigit '\x0B68' = Just 2; getDigit '\x0B69' = Just 3; getDigit '\x0B6A' = Just 4; getDigit '\x0B6B' = Just 5; getDigit '\x0B6C' = Just 6; getDigit '\x0B6D' = Just 7; getDigit '\x0B6E' = Just 8; getDigit '\x0B6F' = Just 9; getDigit '\x0BE7' = Just 1; getDigit '\x0BE8' = Just 2; getDigit '\x0BE9' = Just 3; getDigit '\x0BEA' = Just 4; getDigit '\x0BEB' = Just 5; getDigit '\x0BEC' = Just 6; getDigit '\x0BED' = Just 7; getDigit '\x0BEE' = Just 8; getDigit '\x0BEF' = Just 9; getDigit '\x0C66' = Just 0; getDigit '\x0C67' = Just 1; getDigit '\x0C68' = Just 2; getDigit '\x0C69' = Just 3; getDigit '\x0C6A' = Just 4; getDigit '\x0C6B' = Just 5; getDigit '\x0C6C' = Just 6; getDigit '\x0C6D' = Just 7; getDigit '\x0C6E' = Just 8; getDigit '\x0C6F' = Just 9; getDigit '\x0CE6' = Just 0; getDigit '\x0CE7' = Just 1; getDigit '\x0CE8' = Just 2; getDigit '\x0CE9' = Just 3; getDigit '\x0CEA' = Just 4; getDigit '\x0CEB' = Just 5; getDigit '\x0CEC' = Just 6; getDigit '\x0CED' = Just 7; getDigit '\x0CEE' = Just 8; getDigit '\x0CEF' = Just 9; getDigit '\x0D66' = Just 0; getDigit '\x0D67' = Just 1; getDigit '\x0D68' = Just 2; getDigit '\x0D69' = Just 3; getDigit '\x0D6A' = Just 4; getDigit '\x0D6B' = Just 5; getDigit '\x0D6C' = Just 6; getDigit '\x0D6D' = Just 7; getDigit '\x0D6E' = Just 8; getDigit '\x0D6F' = Just 9; getDigit '\x0E50' = Just 0; getDigit '\x0E51' = Just 1; getDigit '\x0E52' = Just 2; getDigit '\x0E53' = Just 3; getDigit '\x0E54' = Just 4; getDigit '\x0E55' = Just 5; getDigit '\x0E56' = Just 6; getDigit '\x0E57' = Just 7; getDigit '\x0E58' = Just 8; getDigit '\x0E59' = Just 9; getDigit '\x0ED0' = Just 0; getDigit '\x0ED1' = Just 1; getDigit '\x0ED2' = Just 2; getDigit '\x0ED3' = Just 3; getDigit '\x0ED4' = Just 4; getDigit '\x0ED5' = Just 5; getDigit '\x0ED6' = Just 6; getDigit '\x0ED7' = Just 7; getDigit '\x0ED8' = Just 8; getDigit '\x0ED9' = Just 9; getDigit '\x0F20' = Just 0; getDigit '\x0F21' = Just 1; getDigit '\x0F22' = Just 2; getDigit '\x0F23' = Just 3; getDigit '\x0F24' = Just 4; getDigit '\x0F25' = Just 5; getDigit '\x0F26' = Just 6; getDigit '\x0F27' = Just 7; getDigit '\x0F28' = Just 8; getDigit '\x0F29' = Just 9; getDigit '\x1040' = Just 0; getDigit '\x1041' = Just 1; getDigit '\x1042' = Just 2; getDigit '\x1043' = Just 3; getDigit '\x1044' = Just 4; getDigit '\x1045' = Just 5; getDigit '\x1046' = Just 6; getDigit '\x1047' = Just 7; getDigit '\x1048' = Just 8; getDigit '\x1049' = Just 9; getDigit '\x1369' = Just 1; getDigit '\x136A' = Just 2; getDigit '\x136B' = Just 3; getDigit '\x136C' = Just 4; getDigit '\x136D' = Just 5; getDigit '\x136E' = Just 6; getDigit '\x136F' = Just 7; getDigit '\x1370' = Just 8; getDigit '\x1371' = Just 9; getDigit '\x17E0' = Just 0; getDigit '\x17E1' = Just 1; getDigit '\x17E2' = Just 2; getDigit '\x17E3' = Just 3; getDigit '\x17E4' = Just 4; getDigit '\x17E5' = Just 5; getDigit '\x17E6' = Just 6; getDigit '\x17E7' = Just 7; getDigit '\x17E8' = Just 8; getDigit '\x17E9' = Just 9; getDigit '\x1810' = Just 0; getDigit '\x1811' = Just 1; getDigit '\x1812' = Just 2; getDigit '\x1813' = Just 3; getDigit '\x1814' = Just 4; getDigit '\x1815' = Just 5; getDigit '\x1816' = Just 6; getDigit '\x1817' = Just 7; getDigit '\x1818' = Just 8; getDigit '\x1819' = Just 9; getDigit '\x2070' = Just 0; getDigit '\x2074' = Just 4; getDigit '\x2075' = Just 5; getDigit '\x2076' = Just 6; getDigit '\x2077' = Just 7; getDigit '\x2078' = Just 8; getDigit '\x2079' = Just 9; getDigit '\x2080' = Just 0; getDigit '\x2081' = Just 1; getDigit '\x2082' = Just 2; getDigit '\x2083' = Just 3; getDigit '\x2084' = Just 4; getDigit '\x2085' = Just 5; getDigit '\x2086' = Just 6; getDigit '\x2087' = Just 7; getDigit '\x2088' = Just 8; getDigit '\x2089' = Just 9; getDigit '\x2460' = Just 1; getDigit '\x2461' = Just 2; getDigit '\x2462' = Just 3; getDigit '\x2463' = Just 4; getDigit '\x2464' = Just 5; getDigit '\x2465' = Just 6; getDigit '\x2466' = Just 7; getDigit '\x2467' = Just 8; getDigit '\x2468' = Just 9; getDigit '\x2474' = Just 1; getDigit '\x2475' = Just 2; getDigit '\x2476' = Just 3; getDigit '\x2477' = Just 4; getDigit '\x2478' = Just 5; getDigit '\x2479' = Just 6; getDigit '\x247A' = Just 7; getDigit '\x247B' = Just 8; getDigit '\x247C' = Just 9; getDigit '\x2488' = Just 1; getDigit '\x2489' = Just 2; getDigit '\x248A' = Just 3; getDigit '\x248B' = Just 4; getDigit '\x248C' = Just 5; getDigit '\x248D' = Just 6; getDigit '\x248E' = Just 7; getDigit '\x248F' = Just 8; getDigit '\x2490' = Just 9; getDigit '\x24EA' = Just 0; getDigit '\x24F5' = Just 1; getDigit '\x24F6' = Just 2; getDigit '\x24F7' = Just 3; getDigit '\x24F8' = Just 4; getDigit '\x24F9' = Just 5; getDigit '\x24FA' = Just 6; getDigit '\x24FB' = Just 7; getDigit '\x24FC' = Just 8; getDigit '\x24FD' = Just 9; getDigit '\x2776' = Just 1; getDigit '\x2777' = Just 2; getDigit '\x2778' = Just 3; getDigit '\x2779' = Just 4; getDigit '\x277A' = Just 5; getDigit '\x277B' = Just 6; getDigit '\x277C' = Just 7; getDigit '\x277D' = Just 8; getDigit '\x277E' = Just 9; getDigit '\x2780' = Just 1; getDigit '\x2781' = Just 2; getDigit '\x2782' = Just 3; getDigit '\x2783' = Just 4; getDigit '\x2784' = Just 5; getDigit '\x2785' = Just 6; getDigit '\x2786' = Just 7; getDigit '\x2787' = Just 8; getDigit '\x2788' = Just 9; getDigit '\x278A' = Just 1; getDigit '\x278B' = Just 2; getDigit '\x278C' = Just 3; getDigit '\x278D' = Just 4; getDigit '\x278E' = Just 5; getDigit '\x278F' = Just 6; getDigit '\x2790' = Just 7; getDigit '\x2791' = Just 8; getDigit '\x2792' = Just 9; getDigit '\xFF10' = Just 0; getDigit '\xFF11' = Just 1; getDigit '\xFF12' = Just 2; getDigit '\xFF13' = Just 3; getDigit '\xFF14' = Just 4; getDigit '\xFF15' = Just 5; getDigit '\xFF16' = Just 6; getDigit '\xFF17' = Just 7; getDigit '\xFF18' = Just 8; getDigit '\xFF19' = Just 9; getDigit '\x1D7CE' = Just 0; getDigit '\x1D7CF' = Just 1; getDigit '\x1D7D0' = Just 2; getDigit '\x1D7D1' = Just 3; getDigit '\x1D7D2' = Just 4; getDigit '\x1D7D3' = Just 5; getDigit '\x1D7D4' = Just 6; getDigit '\x1D7D5' = Just 7; getDigit '\x1D7D6' = Just 8; getDigit '\x1D7D7' = Just 9; getDigit '\x1D7D8' = Just 0; getDigit '\x1D7D9' = Just 1; getDigit '\x1D7DA' = Just 2; getDigit '\x1D7DB' = Just 3; getDigit '\x1D7DC' = Just 4; getDigit '\x1D7DD' = Just 5; getDigit '\x1D7DE' = Just 6; getDigit '\x1D7DF' = Just 7; getDigit '\x1D7E0' = Just 8; getDigit '\x1D7E1' = Just 9; getDigit '\x1D7E2' = Just 0; getDigit '\x1D7E3' = Just 1; getDigit '\x1D7E4' = Just 2; getDigit '\x1D7E5' = Just 3; getDigit '\x1D7E6' = Just 4; getDigit '\x1D7E7' = Just 5; getDigit '\x1D7E8' = Just 6; getDigit '\x1D7E9' = Just 7; getDigit '\x1D7EA' = Just 8; getDigit '\x1D7EB' = Just 9; getDigit '\x1D7EC' = Just 0; getDigit '\x1D7ED' = Just 1; getDigit '\x1D7EE' = Just 2; getDigit '\x1D7EF' = Just 3; getDigit '\x1D7F0' = Just 4; getDigit '\x1D7F1' = Just 5; getDigit '\x1D7F2' = Just 6; getDigit '\x1D7F3' = Just 7; getDigit '\x1D7F4' = Just 8; getDigit '\x1D7F5' = Just 9; getDigit '\x1D7F6' = Just 0; getDigit '\x1D7F7' = Just 1; getDigit '\x1D7F8' = Just 2; getDigit '\x1D7F9' = Just 3; getDigit '\x1D7FA' = Just 4; getDigit '\x1D7FB' = Just 5; getDigit '\x1D7FC' = Just 6; getDigit '\x1D7FD' = Just 7; getDigit '\x1D7FE' = Just 8; getDigit '\x1D7FF' = Just 9; getDigit c = handleOmittedRange Nothing getDigit c; getNumber :: Char -> Maybe Rational; getNumber '\x0030' = Just (0); getNumber '\x0031' = Just (1); getNumber '\x0032' = Just (2); getNumber '\x0033' = Just (3); getNumber '\x0034' = Just (4); getNumber '\x0035' = Just (5); getNumber '\x0036' = Just (6); getNumber '\x0037' = Just (7); getNumber '\x0038' = Just (8); getNumber '\x0039' = Just (9); getNumber '\x00B2' = Just (2); getNumber '\x00B3' = Just (3); getNumber '\x00B9' = Just (1); getNumber '\x00BC' = Just (1/4); getNumber '\x00BD' = Just (1/2); getNumber '\x00BE' = Just (3/4); getNumber '\x0660' = Just (0); getNumber '\x0661' = Just (1); getNumber '\x0662' = Just (2); getNumber '\x0663' = Just (3); getNumber '\x0664' = Just (4); getNumber '\x0665' = Just (5); getNumber '\x0666' = Just (6); getNumber '\x0667' = Just (7); getNumber '\x0668' = Just (8); getNumber '\x0669' = Just (9); getNumber '\x06F0' = Just (0); getNumber '\x06F1' = Just (1); getNumber '\x06F2' = Just (2); getNumber '\x06F3' = Just (3); getNumber '\x06F4' = Just (4); getNumber '\x06F5' = Just (5); getNumber '\x06F6' = Just (6); getNumber '\x06F7' = Just (7); getNumber '\x06F8' = Just (8); getNumber '\x06F9' = Just (9); getNumber '\x0966' = Just (0); getNumber '\x0967' = Just (1); getNumber '\x0968' = Just (2); getNumber '\x0969' = Just (3); getNumber '\x096A' = Just (4); getNumber '\x096B' = Just (5); getNumber '\x096C' = Just (6); getNumber '\x096D' = Just (7); getNumber '\x096E' = Just (8); getNumber '\x096F' = Just (9); getNumber '\x09E6' = Just (0); getNumber '\x09E7' = Just (1); getNumber '\x09E8' = Just (2); getNumber '\x09E9' = Just (3); getNumber '\x09EA' = Just (4); getNumber '\x09EB' = Just (5); getNumber '\x09EC' = Just (6); getNumber '\x09ED' = Just (7); getNumber '\x09EE' = Just (8); getNumber '\x09EF' = Just (9); getNumber '\x09F4' = Just (1); getNumber '\x09F5' = Just (2); getNumber '\x09F6' = Just (3); getNumber '\x09F7' = Just (4); getNumber '\x09F9' = Just (16); getNumber '\x0A66' = Just (0); getNumber '\x0A67' = Just (1); getNumber '\x0A68' = Just (2); getNumber '\x0A69' = Just (3); getNumber '\x0A6A' = Just (4); getNumber '\x0A6B' = Just (5); getNumber '\x0A6C' = Just (6); getNumber '\x0A6D' = Just (7); getNumber '\x0A6E' = Just (8); getNumber '\x0A6F' = Just (9); getNumber '\x0AE6' = Just (0); getNumber '\x0AE7' = Just (1); getNumber '\x0AE8' = Just (2); getNumber '\x0AE9' = Just (3); getNumber '\x0AEA' = Just (4); getNumber '\x0AEB' = Just (5); getNumber '\x0AEC' = Just (6); getNumber '\x0AED' = Just (7); getNumber '\x0AEE' = Just (8); getNumber '\x0AEF' = Just (9); getNumber '\x0B66' = Just (0); getNumber '\x0B67' = Just (1); getNumber '\x0B68' = Just (2); getNumber '\x0B69' = Just (3); getNumber '\x0B6A' = Just (4); getNumber '\x0B6B' = Just (5); getNumber '\x0B6C' = Just (6); getNumber '\x0B6D' = Just (7); getNumber '\x0B6E' = Just (8); getNumber '\x0B6F' = Just (9); getNumber '\x0BE7' = Just (1); getNumber '\x0BE8' = Just (2); getNumber '\x0BE9' = Just (3); getNumber '\x0BEA' = Just (4); getNumber '\x0BEB' = Just (5); getNumber '\x0BEC' = Just (6); getNumber '\x0BED' = Just (7); getNumber '\x0BEE' = Just (8); getNumber '\x0BEF' = Just (9); getNumber '\x0BF0' = Just (10); getNumber '\x0BF1' = Just (100); getNumber '\x0BF2' = Just (1000); getNumber '\x0C66' = Just (0); getNumber '\x0C67' = Just (1); getNumber '\x0C68' = Just (2); getNumber '\x0C69' = Just (3); getNumber '\x0C6A' = Just (4); getNumber '\x0C6B' = Just (5); getNumber '\x0C6C' = Just (6); getNumber '\x0C6D' = Just (7); getNumber '\x0C6E' = Just (8); getNumber '\x0C6F' = Just (9); getNumber '\x0CE6' = Just (0); getNumber '\x0CE7' = Just (1); getNumber '\x0CE8' = Just (2); getNumber '\x0CE9' = Just (3); getNumber '\x0CEA' = Just (4); getNumber '\x0CEB' = Just (5); getNumber '\x0CEC' = Just (6); getNumber '\x0CED' = Just (7); getNumber '\x0CEE' = Just (8); getNumber '\x0CEF' = Just (9); getNumber '\x0D66' = Just (0); getNumber '\x0D67' = Just (1); getNumber '\x0D68' = Just (2); getNumber '\x0D69' = Just (3); getNumber '\x0D6A' = Just (4); getNumber '\x0D6B' = Just (5); getNumber '\x0D6C' = Just (6); getNumber '\x0D6D' = Just (7); getNumber '\x0D6E' = Just (8); getNumber '\x0D6F' = Just (9); getNumber '\x0E50' = Just (0); getNumber '\x0E51' = Just (1); getNumber '\x0E52' = Just (2); getNumber '\x0E53' = Just (3); getNumber '\x0E54' = Just (4); getNumber '\x0E55' = Just (5); getNumber '\x0E56' = Just (6); getNumber '\x0E57' = Just (7); getNumber '\x0E58' = Just (8); getNumber '\x0E59' = Just (9); getNumber '\x0ED0' = Just (0); getNumber '\x0ED1' = Just (1); getNumber '\x0ED2' = Just (2); getNumber '\x0ED3' = Just (3); getNumber '\x0ED4' = Just (4); getNumber '\x0ED5' = Just (5); getNumber '\x0ED6' = Just (6); getNumber '\x0ED7' = Just (7); getNumber '\x0ED8' = Just (8); getNumber '\x0ED9' = Just (9); getNumber '\x0F20' = Just (0); getNumber '\x0F21' = Just (1); getNumber '\x0F22' = Just (2); getNumber '\x0F23' = Just (3); getNumber '\x0F24' = Just (4); getNumber '\x0F25' = Just (5); getNumber '\x0F26' = Just (6); getNumber '\x0F27' = Just (7); getNumber '\x0F28' = Just (8); getNumber '\x0F29' = Just (9); getNumber '\x0F2A' = Just (1/2); getNumber '\x0F2B' = Just (3/2); getNumber '\x0F2C' = Just (5/2); getNumber '\x0F2D' = Just (7/2); getNumber '\x0F2E' = Just (9/2); getNumber '\x0F2F' = Just (11/2); getNumber '\x0F30' = Just (13/2); getNumber '\x0F31' = Just (15/2); getNumber '\x0F32' = Just (17/2); getNumber '\x0F33' = Just (-1/2); getNumber '\x1040' = Just (0); getNumber '\x1041' = Just (1); getNumber '\x1042' = Just (2); getNumber '\x1043' = Just (3); getNumber '\x1044' = Just (4); getNumber '\x1045' = Just (5); getNumber '\x1046' = Just (6); getNumber '\x1047' = Just (7); getNumber '\x1048' = Just (8); getNumber '\x1049' = Just (9); getNumber '\x1369' = Just (1); getNumber '\x136A' = Just (2); getNumber '\x136B' = Just (3); getNumber '\x136C' = Just (4); getNumber '\x136D' = Just (5); getNumber '\x136E' = Just (6); getNumber '\x136F' = Just (7); getNumber '\x1370' = Just (8); getNumber '\x1371' = Just (9); getNumber '\x1372' = Just (10); getNumber '\x1373' = Just (20); getNumber '\x1374' = Just (30); getNumber '\x1375' = Just (40); getNumber '\x1376' = Just (50); getNumber '\x1377' = Just (60); getNumber '\x1378' = Just (70); getNumber '\x1379' = Just (80); getNumber '\x137A' = Just (90); getNumber '\x137B' = Just (100); getNumber '\x137C' = Just (10000); getNumber '\x16EE' = Just (17); getNumber '\x16EF' = Just (18); getNumber '\x16F0' = Just (19); getNumber '\x17E0' = Just (0); getNumber '\x17E1' = Just (1); getNumber '\x17E2' = Just (2); getNumber '\x17E3' = Just (3); getNumber '\x17E4' = Just (4); getNumber '\x17E5' = Just (5); getNumber '\x17E6' = Just (6); getNumber '\x17E7' = Just (7); getNumber '\x17E8' = Just (8); getNumber '\x17E9' = Just (9); getNumber '\x1810' = Just (0); getNumber '\x1811' = Just (1); getNumber '\x1812' = Just (2); getNumber '\x1813' = Just (3); getNumber '\x1814' = Just (4); getNumber '\x1815' = Just (5); getNumber '\x1816' = Just (6); getNumber '\x1817' = Just (7); getNumber '\x1818' = Just (8); getNumber '\x1819' = Just (9); getNumber '\x2070' = Just (0); getNumber '\x2074' = Just (4); getNumber '\x2075' = Just (5); getNumber '\x2076' = Just (6); getNumber '\x2077' = Just (7); getNumber '\x2078' = Just (8); getNumber '\x2079' = Just (9); getNumber '\x2080' = Just (0); getNumber '\x2081' = Just (1); getNumber '\x2082' = Just (2); getNumber '\x2083' = Just (3); getNumber '\x2084' = Just (4); getNumber '\x2085' = Just (5); getNumber '\x2086' = Just (6); getNumber '\x2087' = Just (7); getNumber '\x2088' = Just (8); getNumber '\x2089' = Just (9); getNumber '\x2153' = Just (1/3); getNumber '\x2154' = Just (2/3); getNumber '\x2155' = Just (1/5); getNumber '\x2156' = Just (2/5); getNumber '\x2157' = Just (3/5); getNumber '\x2158' = Just (4/5); getNumber '\x2159' = Just (1/6); getNumber '\x215A' = Just (5/6); getNumber '\x215B' = Just (1/8); getNumber '\x215C' = Just (3/8); getNumber '\x215D' = Just (5/8); getNumber '\x215E' = Just (7/8); getNumber '\x215F' = Just (1); getNumber '\x2160' = Just (1); getNumber '\x2161' = Just (2); getNumber '\x2162' = Just (3); getNumber '\x2163' = Just (4); getNumber '\x2164' = Just (5); getNumber '\x2165' = Just (6); getNumber '\x2166' = Just (7); getNumber '\x2167' = Just (8); getNumber '\x2168' = Just (9); getNumber '\x2169' = Just (10); getNumber '\x216A' = Just (11); getNumber '\x216B' = Just (12); getNumber '\x216C' = Just (50); getNumber '\x216D' = Just (100); getNumber '\x216E' = Just (500); getNumber '\x216F' = Just (1000); getNumber '\x2170' = Just (1); getNumber '\x2171' = Just (2); getNumber '\x2172' = Just (3); getNumber '\x2173' = Just (4); getNumber '\x2174' = Just (5); getNumber '\x2175' = Just (6); getNumber '\x2176' = Just (7); getNumber '\x2177' = Just (8); getNumber '\x2178' = Just (9); getNumber '\x2179' = Just (10); getNumber '\x217A' = Just (11); getNumber '\x217B' = Just (12); getNumber '\x217C' = Just (50); getNumber '\x217D' = Just (100); getNumber '\x217E' = Just (500); getNumber '\x217F' = Just (1000); getNumber '\x2180' = Just (1000); getNumber '\x2181' = Just (5000); getNumber '\x2182' = Just (10000); getNumber '\x2460' = Just (1); getNumber '\x2461' = Just (2); getNumber '\x2462' = Just (3); getNumber '\x2463' = Just (4); getNumber '\x2464' = Just (5); getNumber '\x2465' = Just (6); getNumber '\x2466' = Just (7); getNumber '\x2467' = Just (8); getNumber '\x2468' = Just (9); getNumber '\x2469' = Just (10); getNumber '\x246A' = Just (11); getNumber '\x246B' = Just (12); getNumber '\x246C' = Just (13); getNumber '\x246D' = Just (14); getNumber '\x246E' = Just (15); getNumber '\x246F' = Just (16); getNumber '\x2470' = Just (17); getNumber '\x2471' = Just (18); getNumber '\x2472' = Just (19); getNumber '\x2473' = Just (20); getNumber '\x2474' = Just (1); getNumber '\x2475' = Just (2); getNumber '\x2476' = Just (3); getNumber '\x2477' = Just (4); getNumber '\x2478' = Just (5); getNumber '\x2479' = Just (6); getNumber '\x247A' = Just (7); getNumber '\x247B' = Just (8); getNumber '\x247C' = Just (9); getNumber '\x247D' = Just (10); getNumber '\x247E' = Just (11); getNumber '\x247F' = Just (12); getNumber '\x2480' = Just (13); getNumber '\x2481' = Just (14); getNumber '\x2482' = Just (15); getNumber '\x2483' = Just (16); getNumber '\x2484' = Just (17); getNumber '\x2485' = Just (18); getNumber '\x2486' = Just (19); getNumber '\x2487' = Just (20); getNumber '\x2488' = Just (1); getNumber '\x2489' = Just (2); getNumber '\x248A' = Just (3); getNumber '\x248B' = Just (4); getNumber '\x248C' = Just (5); getNumber '\x248D' = Just (6); getNumber '\x248E' = Just (7); getNumber '\x248F' = Just (8); getNumber '\x2490' = Just (9); getNumber '\x2491' = Just (10); getNumber '\x2492' = Just (11); getNumber '\x2493' = Just (12); getNumber '\x2494' = Just (13); getNumber '\x2495' = Just (14); getNumber '\x2496' = Just (15); getNumber '\x2497' = Just (16); getNumber '\x2498' = Just (17); getNumber '\x2499' = Just (18); getNumber '\x249A' = Just (19); getNumber '\x249B' = Just (20); getNumber '\x24EA' = Just (0); getNumber '\x24EB' = Just (11); getNumber '\x24EC' = Just (12); getNumber '\x24ED' = Just (13); getNumber '\x24EE' = Just (14); getNumber '\x24EF' = Just (15); getNumber '\x24F0' = Just (16); getNumber '\x24F1' = Just (17); getNumber '\x24F2' = Just (18); getNumber '\x24F3' = Just (19); getNumber '\x24F4' = Just (20); getNumber '\x24F5' = Just (1); getNumber '\x24F6' = Just (2); getNumber '\x24F7' = Just (3); getNumber '\x24F8' = Just (4); getNumber '\x24F9' = Just (5); getNumber '\x24FA' = Just (6); getNumber '\x24FB' = Just (7); getNumber '\x24FC' = Just (8); getNumber '\x24FD' = Just (9); getNumber '\x24FE' = Just (10); getNumber '\x2776' = Just (1); getNumber '\x2777' = Just (2); getNumber '\x2778' = Just (3); getNumber '\x2779' = Just (4); getNumber '\x277A' = Just (5); getNumber '\x277B' = Just (6); getNumber '\x277C' = Just (7); getNumber '\x277D' = Just (8); getNumber '\x277E' = Just (9); getNumber '\x277F' = Just (10); getNumber '\x2780' = Just (1); getNumber '\x2781' = Just (2); getNumber '\x2782' = Just (3); getNumber '\x2783' = Just (4); getNumber '\x2784' = Just (5); getNumber '\x2785' = Just (6); getNumber '\x2786' = Just (7); getNumber '\x2787' = Just (8); getNumber '\x2788' = Just (9); getNumber '\x2789' = Just (10); getNumber '\x278A' = Just (1); getNumber '\x278B' = Just (2); getNumber '\x278C' = Just (3); getNumber '\x278D' = Just (4); getNumber '\x278E' = Just (5); getNumber '\x278F' = Just (6); getNumber '\x2790' = Just (7); getNumber '\x2791' = Just (8); getNumber '\x2792' = Just (9); getNumber '\x2793' = Just (10); getNumber '\x3007' = Just (0); getNumber '\x3021' = Just (1); getNumber '\x3022' = Just (2); getNumber '\x3023' = Just (3); getNumber '\x3024' = Just (4); getNumber '\x3025' = Just (5); getNumber '\x3026' = Just (6); getNumber '\x3027' = Just (7); getNumber '\x3028' = Just (8); getNumber '\x3029' = Just (9); getNumber '\x3038' = Just (10); getNumber '\x3039' = Just (20); getNumber '\x303A' = Just (30); getNumber '\x3192' = Just (1); getNumber '\x3193' = Just (2); getNumber '\x3194' = Just (3); getNumber '\x3195' = Just (4); getNumber '\x3220' = Just (1); getNumber '\x3221' = Just (2); getNumber '\x3222' = Just (3); getNumber '\x3223' = Just (4); getNumber '\x3224' = Just (5); getNumber '\x3225' = Just (6); getNumber '\x3226' = Just (7); getNumber '\x3227' = Just (8); getNumber '\x3228' = Just (9); getNumber '\x3229' = Just (10); getNumber '\x3251' = Just (21); getNumber '\x3252' = Just (22); getNumber '\x3253' = Just (23); getNumber '\x3254' = Just (24); getNumber '\x3255' = Just (25); getNumber '\x3256' = Just (26); getNumber '\x3257' = Just (27); getNumber '\x3258' = Just (28); getNumber '\x3259' = Just (29); getNumber '\x325A' = Just (30); getNumber '\x325B' = Just (31); getNumber '\x325C' = Just (32); getNumber '\x325D' = Just (33); getNumber '\x325E' = Just (34); getNumber '\x325F' = Just (35); getNumber '\x3280' = Just (1); getNumber '\x3281' = Just (2); getNumber '\x3282' = Just (3); getNumber '\x3283' = Just (4); getNumber '\x3284' = Just (5); getNumber '\x3285' = Just (6); getNumber '\x3286' = Just (7); getNumber '\x3287' = Just (8); getNumber '\x3288' = Just (9); getNumber '\x3289' = Just (10); getNumber '\x32B1' = Just (36); getNumber '\x32B2' = Just (37); getNumber '\x32B3' = Just (38); getNumber '\x32B4' = Just (39); getNumber '\x32B5' = Just (40); getNumber '\x32B6' = Just (41); getNumber '\x32B7' = Just (42); getNumber '\x32B8' = Just (43); getNumber '\x32B9' = Just (44); getNumber '\x32BA' = Just (45); getNumber '\x32BB' = Just (46); getNumber '\x32BC' = Just (47); getNumber '\x32BD' = Just (48); getNumber '\x32BE' = Just (49); getNumber '\x32BF' = Just (50); getNumber '\xFF10' = Just (0); getNumber '\xFF11' = Just (1); getNumber '\xFF12' = Just (2); getNumber '\xFF13' = Just (3); getNumber '\xFF14' = Just (4); getNumber '\xFF15' = Just (5); getNumber '\xFF16' = Just (6); getNumber '\xFF17' = Just (7); getNumber '\xFF18' = Just (8); getNumber '\xFF19' = Just (9); getNumber '\x10320' = Just (1); getNumber '\x10321' = Just (5); getNumber '\x10322' = Just (10); getNumber '\x10323' = Just (50); getNumber '\x1D7CE' = Just (0); getNumber '\x1D7CF' = Just (1); getNumber '\x1D7D0' = Just (2); getNumber '\x1D7D1' = Just (3); getNumber '\x1D7D2' = Just (4); getNumber '\x1D7D3' = Just (5); getNumber '\x1D7D4' = Just (6); getNumber '\x1D7D5' = Just (7); getNumber '\x1D7D6' = Just (8); getNumber '\x1D7D7' = Just (9); getNumber '\x1D7D8' = Just (0); getNumber '\x1D7D9' = Just (1); getNumber '\x1D7DA' = Just (2); getNumber '\x1D7DB' = Just (3); getNumber '\x1D7DC' = Just (4); getNumber '\x1D7DD' = Just (5); getNumber '\x1D7DE' = Just (6); getNumber '\x1D7DF' = Just (7); getNumber '\x1D7E0' = Just (8); getNumber '\x1D7E1' = Just (9); getNumber '\x1D7E2' = Just (0); getNumber '\x1D7E3' = Just (1); getNumber '\x1D7E4' = Just (2); getNumber '\x1D7E5' = Just (3); getNumber '\x1D7E6' = Just (4); getNumber '\x1D7E7' = Just (5); getNumber '\x1D7E8' = Just (6); getNumber '\x1D7E9' = Just (7); getNumber '\x1D7EA' = Just (8); getNumber '\x1D7EB' = Just (9); getNumber '\x1D7EC' = Just (0); getNumber '\x1D7ED' = Just (1); getNumber '\x1D7EE' = Just (2); getNumber '\x1D7EF' = Just (3); getNumber '\x1D7F0' = Just (4); getNumber '\x1D7F1' = Just (5); getNumber '\x1D7F2' = Just (6); getNumber '\x1D7F3' = Just (7); getNumber '\x1D7F4' = Just (8); getNumber '\x1D7F5' = Just (9); getNumber '\x1D7F6' = Just (0); getNumber '\x1D7F7' = Just (1); getNumber '\x1D7F8' = Just (2); getNumber '\x1D7F9' = Just (3); getNumber '\x1D7FA' = Just (4); getNumber '\x1D7FB' = Just (5); getNumber '\x1D7FC' = Just (6); getNumber '\x1D7FD' = Just (7); getNumber '\x1D7FE' = Just (8); getNumber '\x1D7FF' = Just (9); getNumber c = handleOmittedRange Nothing getNumber c; isMirrored :: Char -> Bool; isMirrored '\x0028' = True; isMirrored '\x0029' = True; isMirrored '\x003C' = True; isMirrored '\x003E' = True; isMirrored '\x005B' = True; isMirrored '\x005D' = True; isMirrored '\x007B' = True; isMirrored '\x007D' = True; isMirrored '\x00AB' = True; isMirrored '\x00BB' = True; isMirrored '\x2039' = True; isMirrored '\x203A' = True; isMirrored '\x2045' = True; isMirrored '\x2046' = True; isMirrored '\x207D' = True; isMirrored '\x207E' = True; isMirrored '\x208D' = True; isMirrored '\x208E' = True; isMirrored '\x2140' = True; isMirrored '\x2201' = True; isMirrored '\x2202' = True; isMirrored '\x2203' = True; isMirrored '\x2204' = True; isMirrored '\x2208' = True; isMirrored '\x2209' = True; isMirrored '\x220A' = True; isMirrored '\x220B' = True; isMirrored '\x220C' = True; isMirrored '\x220D' = True; isMirrored '\x2211' = True; isMirrored '\x2215' = True; isMirrored '\x2216' = True; isMirrored '\x221A' = True; isMirrored '\x221B' = True; isMirrored '\x221C' = True; isMirrored '\x221D' = True; isMirrored '\x221F' = True; isMirrored '\x2220' = True; isMirrored '\x2221' = True; isMirrored '\x2222' = True; isMirrored '\x2224' = True; isMirrored '\x2226' = True; isMirrored '\x222B' = True; isMirrored '\x222C' = True; isMirrored '\x222D' = True; isMirrored '\x222E' = True; isMirrored '\x222F' = True; isMirrored '\x2230' = True; isMirrored '\x2231' = True; isMirrored '\x2232' = True; isMirrored '\x2233' = True; isMirrored '\x2239' = True; isMirrored '\x223B' = True; isMirrored '\x223C' = True; isMirrored '\x223D' = True; isMirrored '\x223E' = True; isMirrored '\x223F' = True; isMirrored '\x2240' = True; isMirrored '\x2241' = True; isMirrored '\x2242' = True; isMirrored '\x2243' = True; isMirrored '\x2244' = True; isMirrored '\x2245' = True; isMirrored '\x2246' = True; isMirrored '\x2247' = True; isMirrored '\x2248' = True; isMirrored '\x2249' = True; isMirrored '\x224A' = True; isMirrored '\x224B' = True; isMirrored '\x224C' = True; isMirrored '\x2252' = True; isMirrored '\x2253' = True; isMirrored '\x2254' = True; isMirrored '\x2255' = True; isMirrored '\x225F' = True; isMirrored '\x2260' = True; isMirrored '\x2262' = True; isMirrored '\x2264' = True; isMirrored '\x2265' = True; isMirrored '\x2266' = True; isMirrored '\x2267' = True; isMirrored '\x2268' = True; isMirrored '\x2269' = True; isMirrored '\x226A' = True; isMirrored '\x226B' = True; isMirrored '\x226E' = True; isMirrored '\x226F' = True; isMirrored '\x2270' = True; isMirrored '\x2271' = True; isMirrored '\x2272' = True; isMirrored '\x2273' = True; isMirrored '\x2274' = True; isMirrored '\x2275' = True; isMirrored '\x2276' = True; isMirrored '\x2277' = True; isMirrored '\x2278' = True; isMirrored '\x2279' = True; isMirrored '\x227A' = True; isMirrored '\x227B' = True; isMirrored '\x227C' = True; isMirrored '\x227D' = True; isMirrored '\x227E' = True; isMirrored '\x227F' = True; isMirrored '\x2280' = True; isMirrored '\x2281' = True; isMirrored '\x2282' = True; isMirrored '\x2283' = True; isMirrored '\x2284' = True; isMirrored '\x2285' = True; isMirrored '\x2286' = True; isMirrored '\x2287' = True; isMirrored '\x2288' = True; isMirrored '\x2289' = True; isMirrored '\x228A' = True; isMirrored '\x228B' = True; isMirrored '\x228C' = True; isMirrored '\x228F' = True; isMirrored '\x2290' = True; isMirrored '\x2291' = True; isMirrored '\x2292' = True; isMirrored '\x2298' = True; isMirrored '\x22A2' = True; isMirrored '\x22A3' = True; isMirrored '\x22A6' = True; isMirrored '\x22A7' = True; isMirrored '\x22A8' = True; isMirrored '\x22A9' = True; isMirrored '\x22AA' = True; isMirrored '\x22AB' = True; isMirrored '\x22AC' = True; isMirrored '\x22AD' = True; isMirrored '\x22AE' = True; isMirrored '\x22AF' = True; isMirrored '\x22B0' = True; isMirrored '\x22B1' = True; isMirrored '\x22B2' = True; isMirrored '\x22B3' = True; isMirrored '\x22B4' = True; isMirrored '\x22B5' = True; isMirrored '\x22B6' = True; isMirrored '\x22B7' = True; isMirrored '\x22B8' = True; isMirrored '\x22BE' = True; isMirrored '\x22BF' = True; isMirrored '\x22C9' = True; isMirrored '\x22CA' = True; isMirrored '\x22CB' = True; isMirrored '\x22CC' = True; isMirrored '\x22CD' = True; isMirrored '\x22D0' = True; isMirrored '\x22D1' = True; isMirrored '\x22D6' = True; isMirrored '\x22D7' = True; isMirrored '\x22D8' = True; isMirrored '\x22D9' = True; isMirrored '\x22DA' = True; isMirrored '\x22DB' = True; isMirrored '\x22DC' = True; isMirrored '\x22DD' = True; isMirrored '\x22DE' = True; isMirrored '\x22DF' = True; isMirrored '\x22E0' = True; isMirrored '\x22E1' = True; isMirrored '\x22E2' = True; isMirrored '\x22E3' = True; isMirrored '\x22E4' = True; isMirrored '\x22E5' = True; isMirrored '\x22E6' = True; isMirrored '\x22E7' = True; isMirrored '\x22E8' = True; isMirrored '\x22E9' = True; isMirrored '\x22EA' = True; isMirrored '\x22EB' = True; isMirrored '\x22EC' = True; isMirrored '\x22ED' = True; isMirrored '\x22F0' = True; isMirrored '\x22F1' = True; isMirrored '\x22F2' = True; isMirrored '\x22F3' = True; isMirrored '\x22F4' = True; isMirrored '\x22F5' = True; isMirrored '\x22F6' = True; isMirrored '\x22F7' = True; isMirrored '\x22F8' = True; isMirrored '\x22F9' = True; isMirrored '\x22FA' = True; isMirrored '\x22FB' = True; isMirrored '\x22FC' = True; isMirrored '\x22FD' = True; isMirrored '\x22FE' = True; isMirrored '\x22FF' = True; isMirrored '\x2308' = True; isMirrored '\x2309' = True; isMirrored '\x230A' = True; isMirrored '\x230B' = True; isMirrored '\x2320' = True; isMirrored '\x2321' = True; isMirrored '\x2329' = True; isMirrored '\x232A' = True; isMirrored '\x2768' = True; isMirrored '\x2769' = True; isMirrored '\x276A' = True; isMirrored '\x276B' = True; isMirrored '\x276C' = True; isMirrored '\x276D' = True; isMirrored '\x276E' = True; isMirrored '\x276F' = True; isMirrored '\x2770' = True; isMirrored '\x2771' = True; isMirrored '\x2772' = True; isMirrored '\x2773' = True; isMirrored '\x2774' = True; isMirrored '\x2775' = True; isMirrored '\x27D3' = True; isMirrored '\x27D4' = True; isMirrored '\x27D5' = True; isMirrored '\x27D6' = True; isMirrored '\x27DC' = True; isMirrored '\x27DD' = True; isMirrored '\x27DE' = True; isMirrored '\x27E2' = True; isMirrored '\x27E3' = True; isMirrored '\x27E4' = True; isMirrored '\x27E5' = True; isMirrored '\x27E6' = True; isMirrored '\x27E7' = True; isMirrored '\x27E8' = True; isMirrored '\x27E9' = True; isMirrored '\x27EA' = True; isMirrored '\x27EB' = True; isMirrored '\x2983' = True; isMirrored '\x2984' = True; isMirrored '\x2985' = True; isMirrored '\x2986' = True; isMirrored '\x2987' = True; isMirrored '\x2988' = True; isMirrored '\x2989' = True; isMirrored '\x298A' = True; isMirrored '\x298B' = True; isMirrored '\x298C' = True; isMirrored '\x298D' = True; isMirrored '\x298E' = True; isMirrored '\x298F' = True; isMirrored '\x2990' = True; isMirrored '\x2991' = True; isMirrored '\x2992' = True; isMirrored '\x2993' = True; isMirrored '\x2994' = True; isMirrored '\x2995' = True; isMirrored '\x2996' = True; isMirrored '\x2997' = True; isMirrored '\x2998' = True; isMirrored '\x299B' = True; isMirrored '\x299C' = True; isMirrored '\x299D' = True; isMirrored '\x299E' = True; isMirrored '\x299F' = True; isMirrored '\x29A0' = True; isMirrored '\x29A1' = True; isMirrored '\x29A2' = True; isMirrored '\x29A3' = True; isMirrored '\x29A4' = True; isMirrored '\x29A5' = True; isMirrored '\x29A6' = True; isMirrored '\x29A7' = True; isMirrored '\x29A8' = True; isMirrored '\x29A9' = True; isMirrored '\x29AA' = True; isMirrored '\x29AB' = True; isMirrored '\x29AC' = True; isMirrored '\x29AD' = True; isMirrored '\x29AE' = True; isMirrored '\x29AF' = True; isMirrored '\x29B8' = True; isMirrored '\x29C0' = True; isMirrored '\x29C1' = True; isMirrored '\x29C2' = True; isMirrored '\x29C3' = True; isMirrored '\x29C4' = True; isMirrored '\x29C5' = True; isMirrored '\x29C9' = True; isMirrored '\x29CE' = True; isMirrored '\x29CF' = True; isMirrored '\x29D0' = True; isMirrored '\x29D1' = True; isMirrored '\x29D2' = True; isMirrored '\x29D4' = True; isMirrored '\x29D5' = True; isMirrored '\x29D8' = True; isMirrored '\x29D9' = True; isMirrored '\x29DA' = True; isMirrored '\x29DB' = True; isMirrored '\x29DC' = True; isMirrored '\x29E1' = True; isMirrored '\x29E3' = True; isMirrored '\x29E4' = True; isMirrored '\x29E5' = True; isMirrored '\x29E8' = True; isMirrored '\x29E9' = True; isMirrored '\x29F4' = True; isMirrored '\x29F5' = True; isMirrored '\x29F6' = True; isMirrored '\x29F7' = True; isMirrored '\x29F8' = True; isMirrored '\x29F9' = True; isMirrored '\x29FC' = True; isMirrored '\x29FD' = True; isMirrored '\x2A0A' = True; isMirrored '\x2A0B' = True; isMirrored '\x2A0C' = True; isMirrored '\x2A0D' = True; isMirrored '\x2A0E' = True; isMirrored '\x2A0F' = True; isMirrored '\x2A10' = True; isMirrored '\x2A11' = True; isMirrored '\x2A12' = True; isMirrored '\x2A13' = True; isMirrored '\x2A14' = True; isMirrored '\x2A15' = True; isMirrored '\x2A16' = True; isMirrored '\x2A17' = True; isMirrored '\x2A18' = True; isMirrored '\x2A19' = True; isMirrored '\x2A1A' = True; isMirrored '\x2A1B' = True; isMirrored '\x2A1C' = True; isMirrored '\x2A1E' = True; isMirrored '\x2A1F' = True; isMirrored '\x2A20' = True; isMirrored '\x2A21' = True; isMirrored '\x2A24' = True; isMirrored '\x2A26' = True; isMirrored '\x2A29' = True; isMirrored '\x2A2B' = True; isMirrored '\x2A2C' = True; isMirrored '\x2A2D' = True; isMirrored '\x2A2E' = True; isMirrored '\x2A34' = True; isMirrored '\x2A35' = True; isMirrored '\x2A3C' = True; isMirrored '\x2A3D' = True; isMirrored '\x2A3E' = True; isMirrored '\x2A57' = True; isMirrored '\x2A58' = True; isMirrored '\x2A64' = True; isMirrored '\x2A65' = True; isMirrored '\x2A6A' = True; isMirrored '\x2A6B' = True; isMirrored '\x2A6C' = True; isMirrored '\x2A6D' = True; isMirrored '\x2A6F' = True; isMirrored '\x2A70' = True; isMirrored '\x2A73' = True; isMirrored '\x2A74' = True; isMirrored '\x2A79' = True; isMirrored '\x2A7A' = True; isMirrored '\x2A7B' = True; isMirrored '\x2A7C' = True; isMirrored '\x2A7D' = True; isMirrored '\x2A7E' = True; isMirrored '\x2A7F' = True; isMirrored '\x2A80' = True; isMirrored '\x2A81' = True; isMirrored '\x2A82' = True; isMirrored '\x2A83' = True; isMirrored '\x2A84' = True; isMirrored '\x2A85' = True; isMirrored '\x2A86' = True; isMirrored '\x2A87' = True; isMirrored '\x2A88' = True; isMirrored '\x2A89' = True; isMirrored '\x2A8A' = True; isMirrored '\x2A8B' = True; isMirrored '\x2A8C' = True; isMirrored '\x2A8D' = True; isMirrored '\x2A8E' = True; isMirrored '\x2A8F' = True; isMirrored '\x2A90' = True; isMirrored '\x2A91' = True; isMirrored '\x2A92' = True; isMirrored '\x2A93' = True; isMirrored '\x2A94' = True; isMirrored '\x2A95' = True; isMirrored '\x2A96' = True; isMirrored '\x2A97' = True; isMirrored '\x2A98' = True; isMirrored '\x2A99' = True; isMirrored '\x2A9A' = True; isMirrored '\x2A9B' = True; isMirrored '\x2A9C' = True; isMirrored '\x2A9D' = True; isMirrored '\x2A9E' = True; isMirrored '\x2A9F' = True; isMirrored '\x2AA0' = True; isMirrored '\x2AA1' = True; isMirrored '\x2AA2' = True; isMirrored '\x2AA3' = True; isMirrored '\x2AA6' = True; isMirrored '\x2AA7' = True; isMirrored '\x2AA8' = True; isMirrored '\x2AA9' = True; isMirrored '\x2AAA' = True; isMirrored '\x2AAB' = True; isMirrored '\x2AAC' = True; isMirrored '\x2AAD' = True; isMirrored '\x2AAF' = True; isMirrored '\x2AB0' = True; isMirrored '\x2AB1' = True; isMirrored '\x2AB2' = True; isMirrored '\x2AB3' = True; isMirrored '\x2AB4' = True; isMirrored '\x2AB5' = True; isMirrored '\x2AB6' = True; isMirrored '\x2AB7' = True; isMirrored '\x2AB8' = True; isMirrored '\x2AB9' = True; isMirrored '\x2ABA' = True; isMirrored '\x2ABB' = True; isMirrored '\x2ABC' = True; isMirrored '\x2ABD' = True; isMirrored '\x2ABE' = True; isMirrored '\x2ABF' = True; isMirrored '\x2AC0' = True; isMirrored '\x2AC1' = True; isMirrored '\x2AC2' = True; isMirrored '\x2AC3' = True; isMirrored '\x2AC4' = True; isMirrored '\x2AC5' = True; isMirrored '\x2AC6' = True; isMirrored '\x2AC7' = True; isMirrored '\x2AC8' = True; isMirrored '\x2AC9' = True; isMirrored '\x2ACA' = True; isMirrored '\x2ACB' = True; isMirrored '\x2ACC' = True; isMirrored '\x2ACD' = True; isMirrored '\x2ACE' = True; isMirrored '\x2ACF' = True; isMirrored '\x2AD0' = True; isMirrored '\x2AD1' = True; isMirrored '\x2AD2' = True; isMirrored '\x2AD3' = True; isMirrored '\x2AD4' = True; isMirrored '\x2AD5' = True; isMirrored '\x2AD6' = True; isMirrored '\x2ADC' = True; isMirrored '\x2ADE' = True; isMirrored '\x2AE2' = True; isMirrored '\x2AE3' = True; isMirrored '\x2AE4' = True; isMirrored '\x2AE5' = True; isMirrored '\x2AE6' = True; isMirrored '\x2AEC' = True; isMirrored '\x2AED' = True; isMirrored '\x2AEE' = True; isMirrored '\x2AF3' = True; isMirrored '\x2AF7' = True; isMirrored '\x2AF8' = True; isMirrored '\x2AF9' = True; isMirrored '\x2AFA' = True; isMirrored '\x2AFB' = True; isMirrored '\x2AFD' = True; isMirrored '\x3008' = True; isMirrored '\x3009' = True; isMirrored '\x300A' = True; isMirrored '\x300B' = True; isMirrored '\x300C' = True; isMirrored '\x300D' = True; isMirrored '\x300E' = True; isMirrored '\x300F' = True; isMirrored '\x3010' = True; isMirrored '\x3011' = True; isMirrored '\x3014' = True; isMirrored '\x3015' = True; isMirrored '\x3016' = True; isMirrored '\x3017' = True; isMirrored '\x3018' = True; isMirrored '\x3019' = True; isMirrored '\x301A' = True; isMirrored '\x301B' = True; isMirrored '\xFF08' = True; isMirrored '\xFF09' = True; isMirrored '\xFF1C' = True; isMirrored '\xFF1E' = True; isMirrored '\xFF3B' = True; isMirrored '\xFF3D' = True; isMirrored '\xFF5B' = True; isMirrored '\xFF5D' = True; isMirrored '\xFF5F' = True; isMirrored '\xFF60' = True; isMirrored '\xFF62' = True; isMirrored '\xFF63' = True; isMirrored c = handleOmittedRange False isMirrored c; -- Properties -- | Space characters and those format control characters (such as TAB, CR and LF) which should be treated by programming languages as \"white space\" for the purpose of parsing elements. Note: ZERO WIDTH SPACE and ZERO WIDTH NO-BREAK SPACE are not included, since their functions are restricted to line-break control. Their names are unfortunately misleading in this respect. Note: There are other senses of \"whitespace\" that encompass a different set of characters. ; isWhiteSpace :: Char -> Bool; isWhiteSpace i | (i >= '\x0009') && (i <= '\x000D') = True; isWhiteSpace '\x0020' = True; isWhiteSpace '\x0085' = True; isWhiteSpace '\x00A0' = True; isWhiteSpace '\x1680' = True; isWhiteSpace i | (i >= '\x2000') && (i <= '\x200A') = True; isWhiteSpace '\x2028' = True; isWhiteSpace '\x2029' = True; isWhiteSpace '\x202F' = True; isWhiteSpace '\x3000' = True; isWhiteSpace _ = False; -- | Those format control characters which have specific functions in the Bidirectional Algorithm. ; isBidiControl :: Char -> Bool; isBidiControl i | (i >= '\x200E') && (i <= '\x200F') = True; isBidiControl i | (i >= '\x202A') && (i <= '\x202E') = True; isBidiControl _ = False; -- | Those format control characters which have specific functions for control of cursive joining and ligation. ; isJoinControl :: Char -> Bool; isJoinControl i | (i >= '\x200C') && (i <= '\x200D') = True; isJoinControl _ = False; -- | Those punctuation characters explicitly called out as dashes in the Unicode Standard, plus compatibility equivalents to those. Most of these have the Pd General Category, but some have the Sm General Category because of their use in mathematics. ; isDash :: Char -> Bool; isDash '\x002D' = True; isDash '\x00AD' = True; isDash '\x058A' = True; isDash '\x1806' = True; isDash i | (i >= '\x2010') && (i <= '\x2015') = True; isDash '\x207B' = True; isDash '\x208B' = True; isDash '\x2212' = True; isDash '\x301C' = True; isDash '\x3030' = True; isDash i | (i >= '\xFE31') && (i <= '\xFE32') = True; isDash '\xFE58' = True; isDash '\xFE63' = True; isDash '\xFF0D' = True; isDash _ = False; -- | Those dashes used to mark connections between pieces of words, plus the Katakana middle dot. The Katakana middle dot functions like a hyphen, but is shaped like a dot rather than a dash. ; isHyphen :: Char -> Bool; isHyphen '\x002D' = True; isHyphen '\x00AD' = True; isHyphen '\x058A' = True; isHyphen '\x1806' = True; isHyphen i | (i >= '\x2010') && (i <= '\x2011') = True; isHyphen '\x30FB' = True; isHyphen '\xFE63' = True; isHyphen '\xFF0D' = True; isHyphen '\xFF65' = True; isHyphen _ = False; -- | Those punctuation characters that function as quotation marks. ; isQuotationMark :: Char -> Bool; isQuotationMark '\x0022' = True; isQuotationMark '\x0027' = True; isQuotationMark '\x00AB' = True; isQuotationMark '\x00BB' = True; isQuotationMark '\x2018' = True; isQuotationMark '\x2019' = True; isQuotationMark '\x201A' = True; isQuotationMark i | (i >= '\x201B') && (i <= '\x201C') = True; isQuotationMark '\x201D' = True; isQuotationMark '\x201E' = True; isQuotationMark '\x201F' = True; isQuotationMark '\x2039' = True; isQuotationMark '\x203A' = True; isQuotationMark '\x300C' = True; isQuotationMark '\x300D' = True; isQuotationMark '\x300E' = True; isQuotationMark '\x300F' = True; isQuotationMark '\x301D' = True; isQuotationMark i | (i >= '\x301E') && (i <= '\x301F') = True; isQuotationMark '\xFE41' = True; isQuotationMark '\xFE42' = True; isQuotationMark '\xFE43' = True; isQuotationMark '\xFE44' = True; isQuotationMark '\xFF02' = True; isQuotationMark '\xFF07' = True; isQuotationMark '\xFF62' = True; isQuotationMark '\xFF63' = True; isQuotationMark _ = False; -- | Those punctuation characters that generally mark the end of textual units. ; isTerminalPunctuation :: Char -> Bool; isTerminalPunctuation '\x0021' = True; isTerminalPunctuation '\x002C' = True; isTerminalPunctuation '\x002E' = True; isTerminalPunctuation i | (i >= '\x003A') && (i <= '\x003B') = True; isTerminalPunctuation '\x003F' = True; isTerminalPunctuation '\x037E' = True; isTerminalPunctuation '\x0387' = True; isTerminalPunctuation '\x0589' = True; isTerminalPunctuation '\x060C' = True; isTerminalPunctuation '\x061B' = True; isTerminalPunctuation '\x061F' = True; isTerminalPunctuation '\x06D4' = True; isTerminalPunctuation i | (i >= '\x0700') && (i <= '\x070A') = True; isTerminalPunctuation '\x070C' = True; isTerminalPunctuation i | (i >= '\x0964') && (i <= '\x0965') = True; isTerminalPunctuation i | (i >= '\x0E5A') && (i <= '\x0E5B') = True; isTerminalPunctuation i | (i >= '\x104A') && (i <= '\x104B') = True; isTerminalPunctuation i | (i >= '\x1361') && (i <= '\x1368') = True; isTerminalPunctuation i | (i >= '\x166D') && (i <= '\x166E') = True; isTerminalPunctuation i | (i >= '\x16EB') && (i <= '\x16ED') = True; isTerminalPunctuation i | (i >= '\x17D4') && (i <= '\x17D6') = True; isTerminalPunctuation '\x17DA' = True; isTerminalPunctuation i | (i >= '\x1802') && (i <= '\x1805') = True; isTerminalPunctuation i | (i >= '\x1808') && (i <= '\x1809') = True; isTerminalPunctuation i | (i >= '\x203C') && (i <= '\x203D') = True; isTerminalPunctuation i | (i >= '\x2048') && (i <= '\x2049') = True; isTerminalPunctuation i | (i >= '\x3001') && (i <= '\x3002') = True; isTerminalPunctuation i | (i >= '\xFE50') && (i <= '\xFE52') = True; isTerminalPunctuation i | (i >= '\xFE54') && (i <= '\xFE57') = True; isTerminalPunctuation '\xFF01' = True; isTerminalPunctuation '\xFF0C' = True; isTerminalPunctuation '\xFF0E' = True; isTerminalPunctuation i | (i >= '\xFF1A') && (i <= '\xFF1B') = True; isTerminalPunctuation '\xFF1F' = True; isTerminalPunctuation '\xFF61' = True; isTerminalPunctuation '\xFF64' = True; isTerminalPunctuation _ = False; -- | Used in deriving the Math property. ; isOtherMath :: Char -> Bool; isOtherMath '\x0028' = True; isOtherMath '\x0029' = True; isOtherMath '\x002A' = True; isOtherMath '\x002D' = True; isOtherMath '\x002F' = True; isOtherMath '\x005B' = True; isOtherMath '\x005C' = True; isOtherMath '\x005D' = True; isOtherMath '\x005E' = True; isOtherMath '\x007B' = True; isOtherMath '\x007D' = True; isOtherMath '\x2016' = True; isOtherMath i | (i >= '\x2032') && (i <= '\x2034') = True; isOtherMath '\x207D' = True; isOtherMath '\x207E' = True; isOtherMath '\x208D' = True; isOtherMath '\x208E' = True; isOtherMath i | (i >= '\x20D0') && (i <= '\x20DC') = True; isOtherMath '\x20E1' = True; isOtherMath '\x2102' = True; isOtherMath i | (i >= '\x210A') && (i <= '\x2113') = True; isOtherMath '\x2115' = True; isOtherMath i | (i >= '\x2119') && (i <= '\x211D') = True; isOtherMath '\x2124' = True; isOtherMath '\x2128' = True; isOtherMath i | (i >= '\x212C') && (i <= '\x212D') = True; isOtherMath i | (i >= '\x212F') && (i <= '\x2131') = True; isOtherMath i | (i >= '\x2133') && (i <= '\x2134') = True; isOtherMath i | (i >= '\x2135') && (i <= '\x2138') = True; isOtherMath '\xFE35' = True; isOtherMath '\xFE36' = True; isOtherMath '\xFE37' = True; isOtherMath '\xFE38' = True; isOtherMath '\xFE59' = True; isOtherMath '\xFE5A' = True; isOtherMath '\xFE5B' = True; isOtherMath '\xFE5C' = True; isOtherMath '\xFE61' = True; isOtherMath '\xFE63' = True; isOtherMath '\xFE68' = True; isOtherMath '\xFF08' = True; isOtherMath '\xFF09' = True; isOtherMath '\xFF0A' = True; isOtherMath '\xFF0D' = True; isOtherMath '\xFF0F' = True; isOtherMath '\xFF3B' = True; isOtherMath '\xFF3C' = True; isOtherMath '\xFF3D' = True; isOtherMath '\xFF3E' = True; isOtherMath '\xFF5B' = True; isOtherMath '\xFF5D' = True; isOtherMath i | (i >= '\x1D400') && (i <= '\x1D454') = True; isOtherMath i | (i >= '\x1D456') && (i <= '\x1D49C') = True; isOtherMath i | (i >= '\x1D49E') && (i <= '\x1D49F') = True; isOtherMath '\x1D4A2' = True; isOtherMath i | (i >= '\x1D4A5') && (i <= '\x1D4A6') = True; isOtherMath i | (i >= '\x1D4A9') && (i <= '\x1D4AC') = True; isOtherMath i | (i >= '\x1D4AE') && (i <= '\x1D4B9') = True; isOtherMath '\x1D4BB' = True; isOtherMath i | (i >= '\x1D4BD') && (i <= '\x1D4C0') = True; isOtherMath i | (i >= '\x1D4C2') && (i <= '\x1D4C3') = True; isOtherMath i | (i >= '\x1D4C5') && (i <= '\x1D505') = True; isOtherMath i | (i >= '\x1D507') && (i <= '\x1D50A') = True; isOtherMath i | (i >= '\x1D50D') && (i <= '\x1D514') = True; isOtherMath i | (i >= '\x1D516') && (i <= '\x1D51C') = True; isOtherMath i | (i >= '\x1D51E') && (i <= '\x1D539') = True; isOtherMath i | (i >= '\x1D53B') && (i <= '\x1D53E') = True; isOtherMath i | (i >= '\x1D540') && (i <= '\x1D544') = True; isOtherMath '\x1D546' = True; isOtherMath i | (i >= '\x1D54A') && (i <= '\x1D550') = True; isOtherMath i | (i >= '\x1D552') && (i <= '\x1D6A3') = True; isOtherMath i | (i >= '\x1D6A8') && (i <= '\x1D6C0') = True; isOtherMath i | (i >= '\x1D6C2') && (i <= '\x1D6DA') = True; isOtherMath i | (i >= '\x1D6DC') && (i <= '\x1D6FA') = True; isOtherMath i | (i >= '\x1D6FC') && (i <= '\x1D714') = True; isOtherMath i | (i >= '\x1D716') && (i <= '\x1D734') = True; isOtherMath i | (i >= '\x1D736') && (i <= '\x1D74E') = True; isOtherMath i | (i >= '\x1D750') && (i <= '\x1D76E') = True; isOtherMath i | (i >= '\x1D770') && (i <= '\x1D788') = True; isOtherMath i | (i >= '\x1D78A') && (i <= '\x1D7A8') = True; isOtherMath i | (i >= '\x1D7AA') && (i <= '\x1D7C2') = True; isOtherMath i | (i >= '\x1D7C4') && (i <= '\x1D7C9') = True; isOtherMath i | (i >= '\x1D7CE') && (i <= '\x1D7FF') = True; isOtherMath _ = False; -- | Characters commonly used for the representation of hexadecimal numbers, plus their compatibility equivalents. ; isHexDigit :: Char -> Bool; isHexDigit i | (i >= '\x0030') && (i <= '\x0039') = True; isHexDigit i | (i >= '\x0041') && (i <= '\x0046') = True; isHexDigit i | (i >= '\x0061') && (i <= '\x0066') = True; isHexDigit i | (i >= '\xFF10') && (i <= '\xFF19') = True; isHexDigit i | (i >= '\xFF21') && (i <= '\xFF26') = True; isHexDigit i | (i >= '\xFF41') && (i <= '\xFF46') = True; isHexDigit _ = False; -- | ASCII characters commonly used for the representation of hexadecimal numbers. ; isASCIIHexDigit :: Char -> Bool; isASCIIHexDigit i | (i >= '\x0030') && (i <= '\x0039') = True; isASCIIHexDigit i | (i >= '\x0041') && (i <= '\x0046') = True; isASCIIHexDigit i | (i >= '\x0061') && (i <= '\x0066') = True; isASCIIHexDigit _ = False; -- | Used in deriving the Alphabetic property. ; isOtherAlphabetic :: Char -> Bool; isOtherAlphabetic '\x0345' = True; isOtherAlphabetic i | (i >= '\x05B0') && (i <= '\x05B9') = True; isOtherAlphabetic i | (i >= '\x05BB') && (i <= '\x05BD') = True; isOtherAlphabetic '\x05BF' = True; isOtherAlphabetic i | (i >= '\x05C1') && (i <= '\x05C2') = True; isOtherAlphabetic '\x05C4' = True; isOtherAlphabetic i | (i >= '\x064B') && (i <= '\x0655') = True; isOtherAlphabetic '\x0670' = True; isOtherAlphabetic i | (i >= '\x06D6') && (i <= '\x06DC') = True; isOtherAlphabetic i | (i >= '\x06E1') && (i <= '\x06E4') = True; isOtherAlphabetic i | (i >= '\x06E7') && (i <= '\x06E8') = True; isOtherAlphabetic '\x06ED' = True; isOtherAlphabetic '\x0711' = True; isOtherAlphabetic i | (i >= '\x0730') && (i <= '\x073F') = True; isOtherAlphabetic i | (i >= '\x07A6') && (i <= '\x07B0') = True; isOtherAlphabetic i | (i >= '\x0901') && (i <= '\x0902') = True; isOtherAlphabetic '\x0903' = True; isOtherAlphabetic i | (i >= '\x093E') && (i <= '\x0940') = True; isOtherAlphabetic i | (i >= '\x0941') && (i <= '\x0948') = True; isOtherAlphabetic i | (i >= '\x0949') && (i <= '\x094C') = True; isOtherAlphabetic i | (i >= '\x0962') && (i <= '\x0963') = True; isOtherAlphabetic '\x0981' = True; isOtherAlphabetic i | (i >= '\x0982') && (i <= '\x0983') = True; isOtherAlphabetic i | (i >= '\x09BE') && (i <= '\x09C0') = True; isOtherAlphabetic i | (i >= '\x09C1') && (i <= '\x09C4') = True; isOtherAlphabetic i | (i >= '\x09C7') && (i <= '\x09C8') = True; isOtherAlphabetic i | (i >= '\x09CB') && (i <= '\x09CC') = True; isOtherAlphabetic '\x09D7' = True; isOtherAlphabetic i | (i >= '\x09E2') && (i <= '\x09E3') = True; isOtherAlphabetic '\x0A02' = True; isOtherAlphabetic i | (i >= '\x0A3E') && (i <= '\x0A40') = True; isOtherAlphabetic i | (i >= '\x0A41') && (i <= '\x0A42') = True; isOtherAlphabetic i | (i >= '\x0A47') && (i <= '\x0A48') = True; isOtherAlphabetic i | (i >= '\x0A4B') && (i <= '\x0A4C') = True; isOtherAlphabetic i | (i >= '\x0A70') && (i <= '\x0A71') = True; isOtherAlphabetic i | (i >= '\x0A81') && (i <= '\x0A82') = True; isOtherAlphabetic '\x0A83' = True; isOtherAlphabetic i | (i >= '\x0ABE') && (i <= '\x0AC0') = True; isOtherAlphabetic i | (i >= '\x0AC1') && (i <= '\x0AC5') = True; isOtherAlphabetic i | (i >= '\x0AC7') && (i <= '\x0AC8') = True; isOtherAlphabetic '\x0AC9' = True; isOtherAlphabetic i | (i >= '\x0ACB') && (i <= '\x0ACC') = True; isOtherAlphabetic '\x0B01' = True; isOtherAlphabetic i | (i >= '\x0B02') && (i <= '\x0B03') = True; isOtherAlphabetic '\x0B3E' = True; isOtherAlphabetic '\x0B3F' = True; isOtherAlphabetic '\x0B40' = True; isOtherAlphabetic i | (i >= '\x0B41') && (i <= '\x0B43') = True; isOtherAlphabetic i | (i >= '\x0B47') && (i <= '\x0B48') = True; isOtherAlphabetic i | (i >= '\x0B4B') && (i <= '\x0B4C') = True; isOtherAlphabetic '\x0B56' = True; isOtherAlphabetic '\x0B57' = True; isOtherAlphabetic '\x0B82' = True; isOtherAlphabetic i | (i >= '\x0BBE') && (i <= '\x0BBF') = True; isOtherAlphabetic '\x0BC0' = True; isOtherAlphabetic i | (i >= '\x0BC1') && (i <= '\x0BC2') = True; isOtherAlphabetic i | (i >= '\x0BC6') && (i <= '\x0BC8') = True; isOtherAlphabetic i | (i >= '\x0BCA') && (i <= '\x0BCC') = True; isOtherAlphabetic '\x0BD7' = True; isOtherAlphabetic i | (i >= '\x0C01') && (i <= '\x0C03') = True; isOtherAlphabetic i | (i >= '\x0C3E') && (i <= '\x0C40') = True; isOtherAlphabetic i | (i >= '\x0C41') && (i <= '\x0C44') = True; isOtherAlphabetic i | (i >= '\x0C46') && (i <= '\x0C48') = True; isOtherAlphabetic i | (i >= '\x0C4A') && (i <= '\x0C4C') = True; isOtherAlphabetic i | (i >= '\x0C55') && (i <= '\x0C56') = True; isOtherAlphabetic i | (i >= '\x0C82') && (i <= '\x0C83') = True; isOtherAlphabetic '\x0CBE' = True; isOtherAlphabetic '\x0CBF' = True; isOtherAlphabetic i | (i >= '\x0CC0') && (i <= '\x0CC4') = True; isOtherAlphabetic '\x0CC6' = True; isOtherAlphabetic i | (i >= '\x0CC7') && (i <= '\x0CC8') = True; isOtherAlphabetic i | (i >= '\x0CCA') && (i <= '\x0CCB') = True; isOtherAlphabetic '\x0CCC' = True; isOtherAlphabetic i | (i >= '\x0CD5') && (i <= '\x0CD6') = True; isOtherAlphabetic i | (i >= '\x0D02') && (i <= '\x0D03') = True; isOtherAlphabetic i | (i >= '\x0D3E') && (i <= '\x0D40') = True; isOtherAlphabetic i | (i >= '\x0D41') && (i <= '\x0D43') = True; isOtherAlphabetic i | (i >= '\x0D46') && (i <= '\x0D48') = True; isOtherAlphabetic i | (i >= '\x0D4A') && (i <= '\x0D4C') = True; isOtherAlphabetic '\x0D57' = True; isOtherAlphabetic i | (i >= '\x0D82') && (i <= '\x0D83') = True; isOtherAlphabetic i | (i >= '\x0DCF') && (i <= '\x0DD1') = True; isOtherAlphabetic i | (i >= '\x0DD2') && (i <= '\x0DD4') = True; isOtherAlphabetic '\x0DD6' = True; isOtherAlphabetic i | (i >= '\x0DD8') && (i <= '\x0DDF') = True; isOtherAlphabetic i | (i >= '\x0DF2') && (i <= '\x0DF3') = True; isOtherAlphabetic '\x0E31' = True; isOtherAlphabetic i | (i >= '\x0E34') && (i <= '\x0E3A') = True; isOtherAlphabetic '\x0E4D' = True; isOtherAlphabetic '\x0EB1' = True; isOtherAlphabetic i | (i >= '\x0EB4') && (i <= '\x0EB9') = True; isOtherAlphabetic i | (i >= '\x0EBB') && (i <= '\x0EBC') = True; isOtherAlphabetic '\x0ECD' = True; isOtherAlphabetic i | (i >= '\x0F71') && (i <= '\x0F7E') = True; isOtherAlphabetic '\x0F7F' = True; isOtherAlphabetic i | (i >= '\x0F80') && (i <= '\x0F81') = True; isOtherAlphabetic i | (i >= '\x0F90') && (i <= '\x0F97') = True; isOtherAlphabetic i | (i >= '\x0F99') && (i <= '\x0FBC') = True; isOtherAlphabetic '\x102C' = True; isOtherAlphabetic i | (i >= '\x102D') && (i <= '\x1030') = True; isOtherAlphabetic '\x1031' = True; isOtherAlphabetic '\x1032' = True; isOtherAlphabetic '\x1036' = True; isOtherAlphabetic '\x1038' = True; isOtherAlphabetic i | (i >= '\x1056') && (i <= '\x1057') = True; isOtherAlphabetic i | (i >= '\x1058') && (i <= '\x1059') = True; isOtherAlphabetic i | (i >= '\x16EE') && (i <= '\x16F0') = True; isOtherAlphabetic i | (i >= '\x1712') && (i <= '\x1713') = True; isOtherAlphabetic i | (i >= '\x1732') && (i <= '\x1733') = True; isOtherAlphabetic i | (i >= '\x1752') && (i <= '\x1753') = True; isOtherAlphabetic i | (i >= '\x1772') && (i <= '\x1773') = True; isOtherAlphabetic i | (i >= '\x17B4') && (i <= '\x17B6') = True; isOtherAlphabetic i | (i >= '\x17B7') && (i <= '\x17BD') = True; isOtherAlphabetic i | (i >= '\x17BE') && (i <= '\x17C5') = True; isOtherAlphabetic '\x17C6' = True; isOtherAlphabetic i | (i >= '\x17C7') && (i <= '\x17C8') = True; isOtherAlphabetic '\x18A9' = True; isOtherAlphabetic i | (i >= '\x2160') && (i <= '\x2183') = True; isOtherAlphabetic '\xFB1E' = True; isOtherAlphabetic '\x1034A' = True; isOtherAlphabetic _ = False; -- | Characters considered to be CJKV (Chinese, Japanese, Korean, and Vietnamese) ideographs. ; isIdeographic :: Char -> Bool; isIdeographic '\x3006' = True; isIdeographic '\x3007' = True; isIdeographic i | (i >= '\x3021') && (i <= '\x3029') = True; isIdeographic i | (i >= '\x3038') && (i <= '\x303A') = True; isIdeographic i | (i >= '\x3400') && (i <= '\x4DB5') = True; isIdeographic i | (i >= '\x4E00') && (i <= '\x9FA5') = True; isIdeographic i | (i >= '\xF900') && (i <= '\xFA2D') = True; isIdeographic i | (i >= '\x20000') && (i <= '\x2A6D6') = True; isIdeographic i | (i >= '\x2F800') && (i <= '\x2FA1D') = True; isIdeographic _ = False; -- | Characters that linguistically modify the meaning of another character to which they apply. Some diacritics are not combining characters, and some combining characters are not diacritics. ; isDiacritic :: Char -> Bool; isDiacritic '\x005E' = True; isDiacritic '\x0060' = True; isDiacritic '\x00A8' = True; isDiacritic '\x00AF' = True; isDiacritic '\x00B4' = True; isDiacritic '\x00B7' = True; isDiacritic '\x00B8' = True; isDiacritic i | (i >= '\x02B0') && (i <= '\x02B8') = True; isDiacritic i | (i >= '\x02B9') && (i <= '\x02BA') = True; isDiacritic i | (i >= '\x02BB') && (i <= '\x02C1') = True; isDiacritic i | (i >= '\x02C2') && (i <= '\x02CF') = True; isDiacritic i | (i >= '\x02D0') && (i <= '\x02D1') = True; isDiacritic i | (i >= '\x02D2') && (i <= '\x02DF') = True; isDiacritic i | (i >= '\x02E0') && (i <= '\x02E4') = True; isDiacritic i | (i >= '\x02E5') && (i <= '\x02ED') = True; isDiacritic '\x02EE' = True; isDiacritic i | (i >= '\x0300') && (i <= '\x034E') = True; isDiacritic i | (i >= '\x0360') && (i <= '\x0362') = True; isDiacritic i | (i >= '\x0374') && (i <= '\x0375') = True; isDiacritic '\x037A' = True; isDiacritic i | (i >= '\x0384') && (i <= '\x0385') = True; isDiacritic i | (i >= '\x0483') && (i <= '\x0486') = True; isDiacritic '\x0559' = True; isDiacritic i | (i >= '\x0591') && (i <= '\x05A1') = True; isDiacritic i | (i >= '\x05A3') && (i <= '\x05B9') = True; isDiacritic i | (i >= '\x05BB') && (i <= '\x05BD') = True; isDiacritic '\x05BF' = True; isDiacritic i | (i >= '\x05C1') && (i <= '\x05C2') = True; isDiacritic '\x05C4' = True; isDiacritic i | (i >= '\x064B') && (i <= '\x0652') = True; isDiacritic i | (i >= '\x06DF') && (i <= '\x06E0') = True; isDiacritic i | (i >= '\x06E5') && (i <= '\x06E6') = True; isDiacritic i | (i >= '\x06EA') && (i <= '\x06EC') = True; isDiacritic i | (i >= '\x0730') && (i <= '\x074A') = True; isDiacritic i | (i >= '\x07A6') && (i <= '\x07B0') = True; isDiacritic '\x093C' = True; isDiacritic '\x094D' = True; isDiacritic i | (i >= '\x0951') && (i <= '\x0954') = True; isDiacritic '\x09BC' = True; isDiacritic '\x09CD' = True; isDiacritic '\x0A3C' = True; isDiacritic '\x0A4D' = True; isDiacritic '\x0ABC' = True; isDiacritic '\x0ACD' = True; isDiacritic '\x0B3C' = True; isDiacritic '\x0B4D' = True; isDiacritic '\x0BCD' = True; isDiacritic '\x0C4D' = True; isDiacritic '\x0CCD' = True; isDiacritic '\x0D4D' = True; isDiacritic '\x0DCA' = True; isDiacritic i | (i >= '\x0E47') && (i <= '\x0E4C') = True; isDiacritic '\x0E4E' = True; isDiacritic i | (i >= '\x0EC8') && (i <= '\x0ECC') = True; isDiacritic i | (i >= '\x0F18') && (i <= '\x0F19') = True; isDiacritic '\x0F35' = True; isDiacritic '\x0F37' = True; isDiacritic '\x0F39' = True; isDiacritic i | (i >= '\x0F3E') && (i <= '\x0F3F') = True; isDiacritic i | (i >= '\x0F82') && (i <= '\x0F84') = True; isDiacritic i | (i >= '\x0F86') && (i <= '\x0F87') = True; isDiacritic '\x0FC6' = True; isDiacritic '\x1037' = True; isDiacritic '\x1039' = True; isDiacritic i | (i >= '\x17C9') && (i <= '\x17D3') = True; isDiacritic '\x1FBD' = True; isDiacritic i | (i >= '\x1FBF') && (i <= '\x1FC1') = True; isDiacritic i | (i >= '\x1FCD') && (i <= '\x1FCF') = True; isDiacritic i | (i >= '\x1FDD') && (i <= '\x1FDF') = True; isDiacritic i | (i >= '\x1FED') && (i <= '\x1FEF') = True; isDiacritic i | (i >= '\x1FFD') && (i <= '\x1FFE') = True; isDiacritic i | (i >= '\x302A') && (i <= '\x302F') = True; isDiacritic i | (i >= '\x3099') && (i <= '\x309A') = True; isDiacritic i | (i >= '\x309B') && (i <= '\x309C') = True; isDiacritic '\x30FC' = True; isDiacritic '\xFB1E' = True; isDiacritic i | (i >= '\xFE20') && (i <= '\xFE23') = True; isDiacritic '\xFF3E' = True; isDiacritic '\xFF40' = True; isDiacritic '\xFF70' = True; isDiacritic i | (i >= '\xFF9E') && (i <= '\xFF9F') = True; isDiacritic '\xFFE3' = True; isDiacritic i | (i >= '\x1D167') && (i <= '\x1D169') = True; isDiacritic i | (i >= '\x1D16D') && (i <= '\x1D172') = True; isDiacritic i | (i >= '\x1D17B') && (i <= '\x1D182') = True; isDiacritic i | (i >= '\x1D185') && (i <= '\x1D18B') = True; isDiacritic i | (i >= '\x1D1AA') && (i <= '\x1D1AD') = True; isDiacritic _ = False; -- | Characters whose principal function is to extend the value or shape of a preceding alphabetic character. Typical of these are length and iteration marks. ; isExtender :: Char -> Bool; isExtender '\x00B7' = True; isExtender i | (i >= '\x02D0') && (i <= '\x02D1') = True; isExtender '\x0640' = True; isExtender '\x0E46' = True; isExtender '\x0EC6' = True; isExtender '\x1843' = True; isExtender '\x3005' = True; isExtender i | (i >= '\x3031') && (i <= '\x3035') = True; isExtender i | (i >= '\x309D') && (i <= '\x309E') = True; isExtender i | (i >= '\x30FC') && (i <= '\x30FE') = True; isExtender '\xFF70' = True; isExtender _ = False; -- | Used in deriving the Lowercase property. ; isOtherLowercase :: Char -> Bool; isOtherLowercase i | (i >= '\x02B0') && (i <= '\x02B8') = True; isOtherLowercase i | (i >= '\x02C0') && (i <= '\x02C1') = True; isOtherLowercase i | (i >= '\x02E0') && (i <= '\x02E4') = True; isOtherLowercase '\x0345' = True; isOtherLowercase '\x037A' = True; isOtherLowercase i | (i >= '\x2170') && (i <= '\x217F') = True; isOtherLowercase i | (i >= '\x24D0') && (i <= '\x24E9') = True; isOtherLowercase _ = False; -- | Used in deriving the Uppercase property. ; isOtherUppercase :: Char -> Bool; isOtherUppercase i | (i >= '\x2160') && (i <= '\x216F') = True; isOtherUppercase i | (i >= '\x24B6') && (i <= '\x24CF') = True; isOtherUppercase _ = False; -- | Code points that are explicitly defined as illegal for the encoding of characters. See Unicode 3.1 for more information. ; isNoncharacterCodePoint :: Char -> Bool; isNoncharacterCodePoint i | (i >= '\xFDD0') && (i <= '\xFDEF') = True; isNoncharacterCodePoint i | (i >= '\xFFFE') && (i <= '\xFFFF') = True; isNoncharacterCodePoint i | (i >= '\x1FFFE') && (i <= '\x1FFFF') = True; isNoncharacterCodePoint i | (i >= '\x2FFFE') && (i <= '\x2FFFF') = True; isNoncharacterCodePoint i | (i >= '\x3FFFE') && (i <= '\x3FFFF') = True; isNoncharacterCodePoint i | (i >= '\x4FFFE') && (i <= '\x4FFFF') = True; isNoncharacterCodePoint i | (i >= '\x5FFFE') && (i <= '\x5FFFF') = True; isNoncharacterCodePoint i | (i >= '\x6FFFE') && (i <= '\x6FFFF') = True; isNoncharacterCodePoint i | (i >= '\x7FFFE') && (i <= '\x7FFFF') = True; isNoncharacterCodePoint i | (i >= '\x8FFFE') && (i <= '\x8FFFF') = True; isNoncharacterCodePoint i | (i >= '\x9FFFE') && (i <= '\x9FFFF') = True; isNoncharacterCodePoint i | (i >= '\xAFFFE') && (i <= '\xAFFFF') = True; isNoncharacterCodePoint i | (i >= '\xBFFFE') && (i <= '\xBFFFF') = True; isNoncharacterCodePoint i | (i >= '\xCFFFE') && (i <= '\xCFFFF') = True; isNoncharacterCodePoint i | (i >= '\xDFFFE') && (i <= '\xDFFFF') = True; isNoncharacterCodePoint i | (i >= '\xEFFFE') && (i <= '\xEFFFF') = True; isNoncharacterCodePoint i | (i >= '\xFFFFE') && (i <= '\xFFFFF') = True; isNoncharacterCodePoint i | (i >= '\x10FFFE') && (i <= '\x10FFFF') = True; isNoncharacterCodePoint _ = False; -- | Used in deriving the Grapheme_Extend property. ; isOtherGraphemeExtend :: Char -> Bool; isOtherGraphemeExtend i | (i >= '\xFF9E') && (i <= '\xFF9F') = True; isOtherGraphemeExtend _ = False; -- | Used in determining default grapheme cluster boundaries. For more information, see UTR #29: Text Boundaries (in proposed draft status at publication of Unicode 3.2). ; isGraphemeLink :: Char -> Bool; isGraphemeLink '\x094D' = True; isGraphemeLink '\x09CD' = True; isGraphemeLink '\x0A4D' = True; isGraphemeLink '\x0ACD' = True; isGraphemeLink '\x0B4D' = True; isGraphemeLink '\x0BCD' = True; isGraphemeLink '\x0C4D' = True; isGraphemeLink '\x0CCD' = True; isGraphemeLink '\x0D4D' = True; isGraphemeLink '\x0DCA' = True; isGraphemeLink '\x0E3A' = True; isGraphemeLink '\x1039' = True; isGraphemeLink '\x17D2' = True; isGraphemeLink _ = False; -- | For a machine-readable list of Ideographic Description Sequences. For more information, see Unicode 3.2. ; isIDSBinaryOperator :: Char -> Bool; isIDSBinaryOperator i | (i >= '\x2FF0') && (i <= '\x2FF1') = True; isIDSBinaryOperator i | (i >= '\x2FF4') && (i <= '\x2FFB') = True; isIDSBinaryOperator _ = False; -- | For a machine-readable list of Ideographic Description Sequences. For more information, see Unicode 3.2. ; isIDSTrinaryOperator :: Char -> Bool; isIDSTrinaryOperator i | (i >= '\x2FF2') && (i <= '\x2FF3') = True; isIDSTrinaryOperator _ = False; -- | For a machine-readable list of Ideographic Description Sequences. For more information, see Unicode 3.2. ; isRadical :: Char -> Bool; isRadical i | (i >= '\x2E80') && (i <= '\x2E99') = True; isRadical i | (i >= '\x2E9B') && (i <= '\x2EF3') = True; isRadical i | (i >= '\x2F00') && (i <= '\x2FD5') = True; isRadical _ = False; -- | For a machine-readable list of Ideographic Description Sequences. For more information, see Unicode 3.2. ; isUnifiedIdeograph :: Char -> Bool; isUnifiedIdeograph i | (i >= '\x3400') && (i <= '\x4DB5') = True; isUnifiedIdeograph i | (i >= '\x4E00') && (i <= '\x9FA5') = True; isUnifiedIdeograph i | (i >= '\xFA0E') && (i <= '\xFA0F') = True; isUnifiedIdeograph '\xFA11' = True; isUnifiedIdeograph i | (i >= '\xFA13') && (i <= '\xFA14') = True; isUnifiedIdeograph '\xFA1F' = True; isUnifiedIdeograph '\xFA21' = True; isUnifiedIdeograph i | (i >= '\xFA23') && (i <= '\xFA24') = True; isUnifiedIdeograph i | (i >= '\xFA27') && (i <= '\xFA29') = True; isUnifiedIdeograph i | (i >= '\x20000') && (i <= '\x2A6D6') = True; isUnifiedIdeograph _ = False; -- | Used in deriving the Default_Ignorable_Code_Point property. ; isOtherDefaultIgnorableCodePoint :: Char -> Bool; isOtherDefaultIgnorableCodePoint i | (i >= '\x180B') && (i <= '\x180D') = True; isOtherDefaultIgnorableCodePoint i | (i >= '\x2060') && (i <= '\x2063') = True; isOtherDefaultIgnorableCodePoint i | (i >= '\x2064') && (i <= '\x2069') = True; isOtherDefaultIgnorableCodePoint i | (i >= '\x206A') && (i <= '\x206F') = True; isOtherDefaultIgnorableCodePoint i | (i >= '\xFE00') && (i <= '\xFE0F') = True; isOtherDefaultIgnorableCodePoint i | (i >= '\xFFF0') && (i <= '\xFFF8') = True; isOtherDefaultIgnorableCodePoint i | (i >= '\xFFF9') && (i <= '\xFFFB') = True; isOtherDefaultIgnorableCodePoint '\xE0000' = True; isOtherDefaultIgnorableCodePoint '\xE0001' = True; isOtherDefaultIgnorableCodePoint i | (i >= '\xE0002') && (i <= '\xE001F') = True; isOtherDefaultIgnorableCodePoint i | (i >= '\xE0020') && (i <= '\xE007F') = True; isOtherDefaultIgnorableCodePoint i | (i >= '\xE0080') && (i <= '\xE0FFF') = True; isOtherDefaultIgnorableCodePoint _ = False; -- | For a machine-readable list of deprecated characters. No characters will ever be removed from the standard, but the usage of deprecated characters is strongly discouraged. For more information, see Unicode 3.2. ; isDeprecated :: Char -> Bool; isDeprecated i | (i >= '\x0340') && (i <= '\x0341') = True; isDeprecated i | (i >= '\x206A') && (i <= '\x206F') = True; isDeprecated _ = False; -- | Characters with a \"soft dot\", like i or j. An accent placed on these characters causes the dot to disappear. An explicit dot above can be added where required, such as in Lithuanian. For more information, see Unicode 3.0, Chapter 7, Diacritics on i and j ; isSoftDotted :: Char -> Bool; isSoftDotted i | (i >= '\x0069') && (i <= '\x006A') = True; isSoftDotted '\x012F' = True; isSoftDotted '\x0268' = True; isSoftDotted '\x0456' = True; isSoftDotted '\x0458' = True; isSoftDotted '\x1E2D' = True; isSoftDotted '\x1ECB' = True; isSoftDotted _ = False; -- | There are a small number of characters that do not use logical order. These characters require special handling in most processing. For more information, see Unicode 3.2. ; isLogicalOrderException :: Char -> Bool; isLogicalOrderException i | (i >= '\x0E40') && (i <= '\x0E44') = True; isLogicalOrderException i | (i >= '\x0EC0') && (i <= '\x0EC4') = True; isLogicalOrderException _ = False; }