继续通过 Haskell 研究 CRC,我编写了以下代码来生成用于 CRC32 计算的表:
crc32Table = listArray (0, 255) $ map (tbl 0xEDB88320) [0..255]
tbl polynomial byte = (iterate f byte) !! 8
where f r = xor (shift r (-1)) ((r .&. 1) * polynomial)
这会正确生成表格。我想频繁访问此表,但 1) 不想将结果硬编码为代码,并且 2) 不想每次引用该表时都重新计算它。
我将如何在 Haskell 中记住这个数组?Haskell 记忆页面没有给我任何线索。