在 sml 中扩展 #
假设我在 sml 中有一个非常大的列表,然后 sml 显示一些条目,然后开始显示 # 字符。
有人能告诉我如何查看整个列表吗?
Suppose I have a list in sml which is very big then sml shows a few of the entries and then starts showing # character.
Could someone tell me how could I view the whole list?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
假设这是 SML/NJ,您可以使用
printLength
、printDepth
以及来自 Control.Print 结构。以下是 控件文档的片段。 Print 结构:
例如,我们可以通过更改
printLength
引用来更改不希望在 REPL 中显示的列表元素数量。请注意,对于字符串和数据结构,省略号被写为散列“#”。例如,可以通过以下字符串看到这一点。请注意
val it = ...
行末尾的“#”,这是因为字符串的默认打印深度为 70 个字符:最后,这是一个如何在嵌套中看到这一点的示例数据结构:
两个建议的解决方案将导致打印整个列表,无论它有多长。
Assuming this is SML/NJ you could use
printLength
,printDepth
and friends from the Control.Print structure.The following are a snippet from the documentation of the Control.Print structure:
Thus for example we can change how many elements of a list we wan't to be shown in the REPL, by changing the
printLength
referenceNote that for strings and data structures, the ellipsis is written as a hash '#' instead. This is for example seen with the below string. Note the '#' at the end of the
val it = ...
line, which is because the default print depth of strings are 70 characters:And lastly, an example of how this is seen in nested data structures:
The two suggested solutions will of cause print the entire list no matter how long it is.
你可以做这样的事情:
它的使用示例:
如果你想自动执行它,我怀疑你可以。如果我没记错的话,漂亮的打印机是特定于实现的,并且很可能不允许为多态类型安装漂亮的打印机。
You could do something like this:
An example of its use:
If you want to automatically do it, I doubt you can. If I recall correctly, the pretty printers are implementation specific, and most likely do not allow a pretty-printers to be installed for polymorphic types.
Sabastian P. 代码的简短版本:
Shorter version of Sabastian P.'s code: