-
-
Save dminuoso/fb291c4edd29dda6f114b5571c73d436 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{-# LANGUAGE CPP #-} | |
{- | |
With CPP enabled: | |
> [foldCase_ x | x <- [0..255]] | |
[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,32,32,32,32,32,32,32,32,32,32,32,32,92,120,49,48,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,32,32,32,32,32,32,32,32,32,32,32,92,120,50,48,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,32,32,32,32,32,32,32,32,32,32,32,32,92,120,51,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,32,32,32,32,32,32,32,32,32,32,32,32,92,120,52,48,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,32,32,32,32,32,32,32,32,32,32,32,32,92,120,55,48,113,114,115,116,117,118,119,120,121,122,91,92,93,94,95,32,32,32,32,32,32,32,32,32,32,32,32,92,120,54,48,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,32,32,32,32,32,32,32,32,32,32,32,32,92,120,55,48,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,32,32,32,32,32,32,32,32,32,32,32,32,92,120,56,48,129,130,131,132,133,134,135] | |
With CPP disabled: | |
> [foldCase_ x | x <- [0..255]] | |
[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255] | |
- -} | |
{-# LANGUAGE MagicHash #-} | |
import GHC.Exts (Addr#, indexWord8OffAddr#) | |
import GHC.Int (Int(..)) | |
import GHC.Word (Word8(..)) | |
foldCase_ :: Word8 -> Word8 | |
foldCase_ w = case fromIntegral w of | |
I# n -> W8# (indexWord8OffAddr# table n) | |
where | |
table :: Addr# | |
table = "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\ | |
\\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\ | |
\\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f\ | |
\\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f\ | |
\\x40\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f\ | |
\\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x5b\x5c\x5d\x5e\x5f\ | |
\\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f\ | |
\\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f\ | |
\\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\ | |
\\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\ | |
\\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\ | |
\\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\ | |
\\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\ | |
\\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\ | |
\\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\ | |
\\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"# |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment