Продолжая изучать CRC с помощью Haskell, я написал следующий код для генерации таблицы для вычисления 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? Страницы воспоминаний на Хаскеле не дали мне никаких подсказок.