在sml中打印int列表

时间:2016-04-08 15:21:56

标签: sml smlnj

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

2 个答案:

答案 0 :(得分:1)

在Poly / ML中有一个特殊函数PolyML.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中获得更全面的调试信息。请参阅http://www.polyml.org/documentation/Tutorials/Debugging.html

答案 1 :(得分:0)

不,在SML中没有内置的方法可以打印除字符串以外的任何内容。您可以编写自己的实用程序,也可以将函数分解为可在REPL中单独测试的较小组件,然后您将自动打印返回值。

如果你想构建自己的实用程序,MLton wiki有一个页面描述如何构建一个小型组合子库来打印大多数内置类型:http://mlton.org/TypeIndexedValues#_signature

对于列表,它们可以写到:

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