Skip to content

Instantly share code, notes, and snippets.

@josejuan
Created June 15, 2013 22:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save josejuan/5789847 to your computer and use it in GitHub Desktop.
Save josejuan/5789847 to your computer and use it in GitHub Desktop.
data Hist = Hist {_v00 :: Int, _v01 :: Int, _v02 :: Int, _v03 :: Int, _v04 :: Int, _v05 :: Int, _v06 :: Int, _v07 :: Int, _v08 :: Int, _v09 :: Int, _v0A :: Int, _v0B :: Int, _v0C :: Int, _v0D :: Int, _v0E :: Int, _v0F :: Int, _v10 :: Int, _v11 :: Int, _v12 :: Int, _v13 :: Int, _v14 :: Int, _v15 :: Int, _v16 :: Int, _v17 :: Int, _v18 :: Int, _v19 :: Int, _v1A :: Int, _v1B :: Int, _v1C :: Int, _v1D :: Int, _v1E :: Int, _v1F :: Int, _v20 :: Int, _v21 :: Int, _v22 :: Int, _v23 :: Int, _v24 :: Int, _v25 :: Int, _v26 :: Int, _v27 :: Int, _v28 :: Int, _v29 :: Int, _v2A :: Int, _v2B :: Int, _v2C :: Int, _v2D :: Int, _v2E :: Int, _v2F :: Int, _v30 :: Int, _v31 :: Int, _v32 :: Int, _v33 :: Int, _v34 :: Int, _v35 :: Int, _v36 :: Int, _v37 :: Int, _v38 :: Int, _v39 :: Int, _v3A :: Int, _v3B :: Int, _v3C :: Int, _v3D :: Int, _v3E :: Int, _v3F :: Int, _v40 :: Int, _v41 :: Int, _v42 :: Int, _v43 :: Int, _v44 :: Int, _v45 :: Int, _v46 :: Int, _v47 :: Int, _v48 :: Int, _v49 :: Int, _v4A :: Int, _v4B :: Int, _v4C :: Int, _v4D :: Int, _v4E :: Int, _v4F :: Int, _v50 :: Int, _v51 :: Int, _v52 :: Int, _v53 :: Int, _v54 :: Int, _v55 :: Int, _v56 :: Int, _v57 :: Int, _v58 :: Int, _v59 :: Int, _v5A :: Int, _v5B :: Int, _v5C :: Int, _v5D :: Int, _v5E :: Int, _v5F :: Int, _v60 :: Int, _v61 :: Int, _v62 :: Int, _v63 :: Int, _v64 :: Int, _v65 :: Int, _v66 :: Int, _v67 :: Int, _v68 :: Int, _v69 :: Int, _v6A :: Int, _v6B :: Int, _v6C :: Int, _v6D :: Int, _v6E :: Int, _v6F :: Int, _v70 :: Int, _v71 :: Int, _v72 :: Int, _v73 :: Int, _v74 :: Int, _v75 :: Int, _v76 :: Int, _v77 :: Int, _v78 :: Int, _v79 :: Int, _v7A :: Int, _v7B :: Int, _v7C :: Int, _v7D :: Int, _v7E :: Int, _v7F :: Int, _v80 :: Int, _v81 :: Int, _v82 :: Int, _v83 :: Int, _v84 :: Int, _v85 :: Int, _v86 :: Int, _v87 :: Int, _v88 :: Int, _v89 :: Int, _v8A :: Int, _v8B :: Int, _v8C :: Int, _v8D :: Int, _v8E :: Int, _v8F :: Int, _v90 :: Int, _v91 :: Int, _v92 :: Int, _v93 :: Int, _v94 :: Int, _v95 :: Int, _v96 :: Int, _v97 :: Int, _v98 :: Int, _v99 :: Int, _v9A :: Int, _v9B :: Int, _v9C :: Int, _v9D :: Int, _v9E :: Int, _v9F :: Int, _vA0 :: Int, _vA1 :: Int, _vA2 :: Int, _vA3 :: Int, _vA4 :: Int, _vA5 :: Int, _vA6 :: Int, _vA7 :: Int, _vA8 :: Int, _vA9 :: Int, _vAA :: Int, _vAB :: Int, _vAC :: Int, _vAD :: Int, _vAE :: Int, _vAF :: Int, _vB0 :: Int, _vB1 :: Int, _vB2 :: Int, _vB3 :: Int, _vB4 :: Int, _vB5 :: Int, _vB6 :: Int, _vB7 :: Int, _vB8 :: Int, _vB9 :: Int, _vBA :: Int, _vBB :: Int, _vBC :: Int, _vBD :: Int, _vBE :: Int, _vBF :: Int, _vC0 :: Int, _vC1 :: Int, _vC2 :: Int, _vC3 :: Int, _vC4 :: Int, _vC5 :: Int, _vC6 :: Int, _vC7 :: Int, _vC8 :: Int, _vC9 :: Int, _vCA :: Int, _vCB :: Int, _vCC :: Int, _vCD :: Int, _vCE :: Int, _vCF :: Int, _vD0 :: Int, _vD1 :: Int, _vD2 :: Int, _vD3 :: Int, _vD4 :: Int, _vD5 :: Int, _vD6 :: Int, _vD7 :: Int, _vD8 :: Int, _vD9 :: Int, _vDA :: Int, _vDB :: Int, _vDC :: Int, _vDD :: Int, _vDE :: Int, _vDF :: Int, _vE0 :: Int, _vE1 :: Int, _vE2 :: Int, _vE3 :: Int, _vE4 :: Int, _vE5 :: Int, _vE6 :: Int, _vE7 :: Int, _vE8 :: Int, _vE9 :: Int, _vEA :: Int, _vEB :: Int, _vEC :: Int, _vED :: Int, _vEE :: Int, _vEF :: Int, _vF0 :: Int, _vF1 :: Int, _vF2 :: Int, _vF3 :: Int, _vF4 :: Int, _vF5 :: Int, _vF6 :: Int, _vF7 :: Int, _vF8 :: Int, _vF9 :: Int, _vFA :: Int, _vFB :: Int, _vFC :: Int, _vFD :: Int, _vFE :: Int, _vFF :: Int}
$(makeLenses ''Hist)
emptyHist :: Hist
emptyHist = Hist 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
foldRecord :: B.ByteString -> [Int]
foldRecord = histToList . B.foldl' cnt emptyHist
where histToList (Hist 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 x41 x42 x43 x44 x45 x46 x47 x48 x49 x4A x4B x4C x4D x4E x4F x50 x51 x52 x53 x54 x55 x56 x57 x58 x59 x5A 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) = [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, x41, x42, x43, x44, x45, x46, x47, x48, x49, x4A, x4B, x4C, x4D, x4E, x4F, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x5A, 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]
cnt h 0x00 = over v00 (+1) h
cnt h 0x01 = over v01 (+1) h
cnt h 0x02 = over v02 (+1) h
cnt h 0x03 = over v03 (+1) h
cnt h 0x04 = over v04 (+1) h
cnt h 0x05 = over v05 (+1) h
cnt h 0x06 = over v06 (+1) h
cnt h 0x07 = over v07 (+1) h
cnt h 0x08 = over v08 (+1) h
cnt h 0x09 = over v09 (+1) h
cnt h 0x0A = over v0A (+1) h
cnt h 0x0B = over v0B (+1) h
cnt h 0x0C = over v0C (+1) h
cnt h 0x0D = over v0D (+1) h
cnt h 0x0E = over v0E (+1) h
cnt h 0x0F = over v0F (+1) h
cnt h 0x10 = over v10 (+1) h
cnt h 0x11 = over v11 (+1) h
cnt h 0x12 = over v12 (+1) h
cnt h 0x13 = over v13 (+1) h
cnt h 0x14 = over v14 (+1) h
cnt h 0x15 = over v15 (+1) h
cnt h 0x16 = over v16 (+1) h
cnt h 0x17 = over v17 (+1) h
cnt h 0x18 = over v18 (+1) h
cnt h 0x19 = over v19 (+1) h
cnt h 0x1A = over v1A (+1) h
cnt h 0x1B = over v1B (+1) h
cnt h 0x1C = over v1C (+1) h
cnt h 0x1D = over v1D (+1) h
cnt h 0x1E = over v1E (+1) h
cnt h 0x1F = over v1F (+1) h
cnt h 0x20 = over v20 (+1) h
cnt h 0x21 = over v21 (+1) h
cnt h 0x22 = over v22 (+1) h
cnt h 0x23 = over v23 (+1) h
cnt h 0x24 = over v24 (+1) h
cnt h 0x25 = over v25 (+1) h
cnt h 0x26 = over v26 (+1) h
cnt h 0x27 = over v27 (+1) h
cnt h 0x28 = over v28 (+1) h
cnt h 0x29 = over v29 (+1) h
cnt h 0x2A = over v2A (+1) h
cnt h 0x2B = over v2B (+1) h
cnt h 0x2C = over v2C (+1) h
cnt h 0x2D = over v2D (+1) h
cnt h 0x2E = over v2E (+1) h
cnt h 0x2F = over v2F (+1) h
cnt h 0x30 = over v30 (+1) h
cnt h 0x31 = over v31 (+1) h
cnt h 0x32 = over v32 (+1) h
cnt h 0x33 = over v33 (+1) h
cnt h 0x34 = over v34 (+1) h
cnt h 0x35 = over v35 (+1) h
cnt h 0x36 = over v36 (+1) h
cnt h 0x37 = over v37 (+1) h
cnt h 0x38 = over v38 (+1) h
cnt h 0x39 = over v39 (+1) h
cnt h 0x3A = over v3A (+1) h
cnt h 0x3B = over v3B (+1) h
cnt h 0x3C = over v3C (+1) h
cnt h 0x3D = over v3D (+1) h
cnt h 0x3E = over v3E (+1) h
cnt h 0x3F = over v3F (+1) h
cnt h 0x40 = over v40 (+1) h
cnt h 0x41 = over v41 (+1) h
cnt h 0x42 = over v42 (+1) h
cnt h 0x43 = over v43 (+1) h
cnt h 0x44 = over v44 (+1) h
cnt h 0x45 = over v45 (+1) h
cnt h 0x46 = over v46 (+1) h
cnt h 0x47 = over v47 (+1) h
cnt h 0x48 = over v48 (+1) h
cnt h 0x49 = over v49 (+1) h
cnt h 0x4A = over v4A (+1) h
cnt h 0x4B = over v4B (+1) h
cnt h 0x4C = over v4C (+1) h
cnt h 0x4D = over v4D (+1) h
cnt h 0x4E = over v4E (+1) h
cnt h 0x4F = over v4F (+1) h
cnt h 0x50 = over v50 (+1) h
cnt h 0x51 = over v51 (+1) h
cnt h 0x52 = over v52 (+1) h
cnt h 0x53 = over v53 (+1) h
cnt h 0x54 = over v54 (+1) h
cnt h 0x55 = over v55 (+1) h
cnt h 0x56 = over v56 (+1) h
cnt h 0x57 = over v57 (+1) h
cnt h 0x58 = over v58 (+1) h
cnt h 0x59 = over v59 (+1) h
cnt h 0x5A = over v5A (+1) h
cnt h 0x5B = over v5B (+1) h
cnt h 0x5C = over v5C (+1) h
cnt h 0x5D = over v5D (+1) h
cnt h 0x5E = over v5E (+1) h
cnt h 0x5F = over v5F (+1) h
cnt h 0x60 = over v60 (+1) h
cnt h 0x61 = over v61 (+1) h
cnt h 0x62 = over v62 (+1) h
cnt h 0x63 = over v63 (+1) h
cnt h 0x64 = over v64 (+1) h
cnt h 0x65 = over v65 (+1) h
cnt h 0x66 = over v66 (+1) h
cnt h 0x67 = over v67 (+1) h
cnt h 0x68 = over v68 (+1) h
cnt h 0x69 = over v69 (+1) h
cnt h 0x6A = over v6A (+1) h
cnt h 0x6B = over v6B (+1) h
cnt h 0x6C = over v6C (+1) h
cnt h 0x6D = over v6D (+1) h
cnt h 0x6E = over v6E (+1) h
cnt h 0x6F = over v6F (+1) h
cnt h 0x70 = over v70 (+1) h
cnt h 0x71 = over v71 (+1) h
cnt h 0x72 = over v72 (+1) h
cnt h 0x73 = over v73 (+1) h
cnt h 0x74 = over v74 (+1) h
cnt h 0x75 = over v75 (+1) h
cnt h 0x76 = over v76 (+1) h
cnt h 0x77 = over v77 (+1) h
cnt h 0x78 = over v78 (+1) h
cnt h 0x79 = over v79 (+1) h
cnt h 0x7A = over v7A (+1) h
cnt h 0x7B = over v7B (+1) h
cnt h 0x7C = over v7C (+1) h
cnt h 0x7D = over v7D (+1) h
cnt h 0x7E = over v7E (+1) h
cnt h 0x7F = over v7F (+1) h
cnt h 0x80 = over v80 (+1) h
cnt h 0x81 = over v81 (+1) h
cnt h 0x82 = over v82 (+1) h
cnt h 0x83 = over v83 (+1) h
cnt h 0x84 = over v84 (+1) h
cnt h 0x85 = over v85 (+1) h
cnt h 0x86 = over v86 (+1) h
cnt h 0x87 = over v87 (+1) h
cnt h 0x88 = over v88 (+1) h
cnt h 0x89 = over v89 (+1) h
cnt h 0x8A = over v8A (+1) h
cnt h 0x8B = over v8B (+1) h
cnt h 0x8C = over v8C (+1) h
cnt h 0x8D = over v8D (+1) h
cnt h 0x8E = over v8E (+1) h
cnt h 0x8F = over v8F (+1) h
cnt h 0x90 = over v90 (+1) h
cnt h 0x91 = over v91 (+1) h
cnt h 0x92 = over v92 (+1) h
cnt h 0x93 = over v93 (+1) h
cnt h 0x94 = over v94 (+1) h
cnt h 0x95 = over v95 (+1) h
cnt h 0x96 = over v96 (+1) h
cnt h 0x97 = over v97 (+1) h
cnt h 0x98 = over v98 (+1) h
cnt h 0x99 = over v99 (+1) h
cnt h 0x9A = over v9A (+1) h
cnt h 0x9B = over v9B (+1) h
cnt h 0x9C = over v9C (+1) h
cnt h 0x9D = over v9D (+1) h
cnt h 0x9E = over v9E (+1) h
cnt h 0x9F = over v9F (+1) h
cnt h 0xA0 = over vA0 (+1) h
cnt h 0xA1 = over vA1 (+1) h
cnt h 0xA2 = over vA2 (+1) h
cnt h 0xA3 = over vA3 (+1) h
cnt h 0xA4 = over vA4 (+1) h
cnt h 0xA5 = over vA5 (+1) h
cnt h 0xA6 = over vA6 (+1) h
cnt h 0xA7 = over vA7 (+1) h
cnt h 0xA8 = over vA8 (+1) h
cnt h 0xA9 = over vA9 (+1) h
cnt h 0xAA = over vAA (+1) h
cnt h 0xAB = over vAB (+1) h
cnt h 0xAC = over vAC (+1) h
cnt h 0xAD = over vAD (+1) h
cnt h 0xAE = over vAE (+1) h
cnt h 0xAF = over vAF (+1) h
cnt h 0xB0 = over vB0 (+1) h
cnt h 0xB1 = over vB1 (+1) h
cnt h 0xB2 = over vB2 (+1) h
cnt h 0xB3 = over vB3 (+1) h
cnt h 0xB4 = over vB4 (+1) h
cnt h 0xB5 = over vB5 (+1) h
cnt h 0xB6 = over vB6 (+1) h
cnt h 0xB7 = over vB7 (+1) h
cnt h 0xB8 = over vB8 (+1) h
cnt h 0xB9 = over vB9 (+1) h
cnt h 0xBA = over vBA (+1) h
cnt h 0xBB = over vBB (+1) h
cnt h 0xBC = over vBC (+1) h
cnt h 0xBD = over vBD (+1) h
cnt h 0xBE = over vBE (+1) h
cnt h 0xBF = over vBF (+1) h
cnt h 0xC0 = over vC0 (+1) h
cnt h 0xC1 = over vC1 (+1) h
cnt h 0xC2 = over vC2 (+1) h
cnt h 0xC3 = over vC3 (+1) h
cnt h 0xC4 = over vC4 (+1) h
cnt h 0xC5 = over vC5 (+1) h
cnt h 0xC6 = over vC6 (+1) h
cnt h 0xC7 = over vC7 (+1) h
cnt h 0xC8 = over vC8 (+1) h
cnt h 0xC9 = over vC9 (+1) h
cnt h 0xCA = over vCA (+1) h
cnt h 0xCB = over vCB (+1) h
cnt h 0xCC = over vCC (+1) h
cnt h 0xCD = over vCD (+1) h
cnt h 0xCE = over vCE (+1) h
cnt h 0xCF = over vCF (+1) h
cnt h 0xD0 = over vD0 (+1) h
cnt h 0xD1 = over vD1 (+1) h
cnt h 0xD2 = over vD2 (+1) h
cnt h 0xD3 = over vD3 (+1) h
cnt h 0xD4 = over vD4 (+1) h
cnt h 0xD5 = over vD5 (+1) h
cnt h 0xD6 = over vD6 (+1) h
cnt h 0xD7 = over vD7 (+1) h
cnt h 0xD8 = over vD8 (+1) h
cnt h 0xD9 = over vD9 (+1) h
cnt h 0xDA = over vDA (+1) h
cnt h 0xDB = over vDB (+1) h
cnt h 0xDC = over vDC (+1) h
cnt h 0xDD = over vDD (+1) h
cnt h 0xDE = over vDE (+1) h
cnt h 0xDF = over vDF (+1) h
cnt h 0xE0 = over vE0 (+1) h
cnt h 0xE1 = over vE1 (+1) h
cnt h 0xE2 = over vE2 (+1) h
cnt h 0xE3 = over vE3 (+1) h
cnt h 0xE4 = over vE4 (+1) h
cnt h 0xE5 = over vE5 (+1) h
cnt h 0xE6 = over vE6 (+1) h
cnt h 0xE7 = over vE7 (+1) h
cnt h 0xE8 = over vE8 (+1) h
cnt h 0xE9 = over vE9 (+1) h
cnt h 0xEA = over vEA (+1) h
cnt h 0xEB = over vEB (+1) h
cnt h 0xEC = over vEC (+1) h
cnt h 0xED = over vED (+1) h
cnt h 0xEE = over vEE (+1) h
cnt h 0xEF = over vEF (+1) h
cnt h 0xF0 = over vF0 (+1) h
cnt h 0xF1 = over vF1 (+1) h
cnt h 0xF2 = over vF2 (+1) h
cnt h 0xF3 = over vF3 (+1) h
cnt h 0xF4 = over vF4 (+1) h
cnt h 0xF5 = over vF5 (+1) h
cnt h 0xF6 = over vF6 (+1) h
cnt h 0xF7 = over vF7 (+1) h
cnt h 0xF8 = over vF8 (+1) h
cnt h 0xF9 = over vF9 (+1) h
cnt h 0xFA = over vFA (+1) h
cnt h 0xFB = over vFB (+1) h
cnt h 0xFC = over vFC (+1) h
cnt h 0xFD = over vFD (+1) h
cnt h 0xFE = over vFE (+1) h
cnt h 0xFF = over vFF (+1) h
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment