我是标准 ML 的新手,我正在尝试了解 SML/NJ 运行时环境。我想让它适应我的需要。具体来说,我想:
- 默认使用 IntInf
- 防止它将字符串和 IntInf 截断为 70 个字符。
这是我在 8 多个小时的阅读文档和实验中发现的。
我可以使用命令在 int 之上重载 IntInf
open IntInf;
我可以使用变量 Control.Print.stringDepth 控制字符串中显示多少个字符。例如,这将让它在截断之前显示 1000 个字符:
Control.Print.stringDepth := 1000;
我如何为 IntInf 值做同样的事情?我可以将深度设置为无限(即根本没有截断)吗?
打开 IntInf 是用 IntInf 重载 int 的最佳方法吗?
最后,如何让这一切在运行时自动加载,以便当我调用“sml”时它在我的默认环境中?
编辑:我后来发现有一个名为 Control.Print.intinfDepth 的选项可以设置为一个很大的数字(比如 999999)。不过,我不知道如何使它无限。
我的其他问题仍未得到解答。
编辑:我在 Kansas State 的一个班级遇到了这组 SML/NJ 定制。为了显示我自己的横幅消息并避免显示“val it = true : bool”,我需要测试 SMLofNJ.exportML 的返回值。如果是真的,堆映像刚刚恢复(即启动),我可以显示一条消息。如果为 false,则只是保存了堆映像。