在sml中打印整型列表

在sml中打印整型列表,sml,smlnj,Sml,Smlnj,是否存在直接打印int列表的函数?为了调试,我必须打印int列表。我知道我可以通过编写自己的函数来实现这一点,但我想知道还有其他方法可用吗?没有,除了在SML中打印字符串之外,没有内置的方法。您可以编写自己的实用程序,也可以将函数分解为更小的组件,这些组件可以在REPL中单独测试,然后您将获得返回值的自动漂亮打印 如果您想构建自己的实用程序,MLton wiki有一个页面,描述如何构建一个小型组合器库来打印大多数内置类型: 对于列表,它们达到了您可以编写的程度: val "[3, 1, 4]"

是否存在直接打印int列表的函数?为了调试,我必须打印int列表。我知道我可以通过编写自己的函数来实现这一点,但我想知道还有其他方法可用吗?

没有,除了在SML中打印字符串之外,没有内置的方法。您可以编写自己的实用程序,也可以将函数分解为更小的组件,这些组件可以在REPL中单独测试,然后您将获得返回值的自动漂亮打印

如果您想构建自己的实用程序,MLton wiki有一个页面,描述如何构建一个小型组合器库来打印大多数内置类型:

对于列表,它们达到了您可以编写的程度:

val "[3, 1, 4]" =
  let open Show in show (list int) end [3, 1, 4]

SML/NJ没有其他一些SML实现那么多用于漂亮打印的功能,但它提供了一些灵活性

例如,在默认设置下,您可以:

但是如果在REPL中你评估

Control.Print.printLength := 500;

然后:


在Poly/ML中,有一个特殊的函数
PolyML.print
,它将使用适当的pretty print函数打印大多数值。它不是标准ML的一部分,这就是为什么它位于
PolyML
结构中。如果函数可能是多态的,则可能需要使用类型约束

> fun f (x: int list) = (PolyML.print x; ());
val f = fn: int list -> unit
> f [1,2,3,4];
[1, 2, 3, 4]
val it = (): unit
通过使用调试器,可以在Poly/ML中获得更完整的调试信息。看

> fun f (x: int list) = (PolyML.print x; ());
val f = fn: int list -> unit
> f [1,2,3,4];
[1, 2, 3, 4]
val it = (): unit