【发布时间】:2018-06-12 15:34:14
【问题描述】:
我正在尝试使用命令式和函数式概念构建标准 ML 程序,并将内容写入文件。但是我的 while 循环似乎并没有终止,而是连续打印相同的值。
fun writeImage image filename =
let val ap = TextIO.openOut filename
val (w,h) = size image
val row = ref 0
val stringToWrite = "";
in
while !row < h do
TextIO.output(ap,"A");
row := !row + 1;
TextIO.closeOut ap
end;
如果我删除了 while 循环后的第一行,则循环终止。但如果我包含TextIO.output(ap,"A");,它不会。为什么会这样?
【问题讨论】:
-
自从我上次使用 SML 已经有一段时间了,但是您是否尝试在
row := !row + 1;之后删除;?
标签: arrays algorithm functional-programming sml smlnj