3

我正在将zxcvbn 密码强度算法翻译成 Haskell。

第一步,我从常用单词列表(英文单词、姓氏、男性名字等)中生成几个大型数据结构。这些列表是静态的,只会偶尔重建,并且只有在重新编译应用程序时才会重建。

这些列表和映射用于初始化实际的密码强度算法。

当我将原始 JavaScript 转换为 Scala 时,我将静态值保存为 JSON,算法在启动时会加载它。我只想生成初始化val的 Scala ,但是 Java 虚拟机对类有 64KByte 的限制,而我的数据超过了这个限制(每个结构包含数千个单词并且大于 64KBytes)。

在 Haskell 中处理这个问题的最佳方法是什么?我可以只生成一个包含数据的源代码模块吗?最大模块尺寸限制是多少?我搜索了 Haskell2010 报告,但找不到编译器限制部分。

生成 Haskell 源代码显然是我的首选,因为这样代码可以保持纯净。如果我需要加载 JSON 并在启动时对其进行解析,那么模块的那部分将是不纯的。

4

1 回答 1

3

我可以只生成一个包含数据的源代码模块吗?

是的。没有限制——尽管您的特定机器可能无法处理某些类型的数据和某些优化级别。

序列化数据的字节串文字通常“正常工作”。

请参阅前面的问题 -如何在 Haskell 中将资源编译为二进制文件?在 Haskell 维基

于 2012-12-31T17:13:35.513 回答