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