如何在sml中打印变量?

use*_*719 7 sml smlnj

我是 SML 的新手,在调试时我通常会打印出变量以查看它是否符合我的预期。我想在一个函数中打印出一个变量
,我有这个:
函数头..

let val prod 
 val prod = c + x * y;
in 
 (print "product "; prod mod 10):: (multiplyAux (prod div 10) xs y)
end;
Run Code Online (Sandbox Code Playgroud)


现在它打印字符串产品,但我希望能够打印变量 prod 本身。

ben*_*ers 8

唯一print可以打印的是字符串。所以要打印一个数值,必须先把它转换成一个字符串。例如:

- print("product " ^ (Int.toString (43 mod 5)) ^ "\n");
product 3
val it = () : unit
Run Code Online (Sandbox Code Playgroud)

请注意,Int.toString使用柯里化函数语法(即它的参数不需要元组),因此周围的括号43 mod 5是为了使值清晰而不是Int.toString工作。

- Int.toString 5;
val it = "5" : string
Run Code Online (Sandbox Code Playgroud)

  • 我会 +1 这个,但是对于“`Int.toString` 是一个柯里化函数”的奇怪声明;这个词并不意味着你的想法。(请参阅 http://en.wikipedia.org/wiki/Currying。)需要括号的原因是前缀函数应用程序的优先级高于中缀。 (5认同)