0

我正在尝试用 SML 编写一个程序,该程序将从用户那里读取一系列/列表/数字序列,处理数字并输出结果。我不知道用户会输入多少个数字。程序既可以读入所有数字并一起输出结果,也可以一次读取并输出一个。我不在乎输入是在单独的文件中还是在控制台手动输入。

我需要做什么才能读取输入?

fun fact x = if x<2 then 1 else x*fact(x-1); 

let val keepgoing:bool ref = ref true in
   while !keepgoing do
      let val num = valOf(TextIO.inputLine TextIO.stdIn) in 
      print( Int.toString( fact( valOf( Int.fromString( num ) ) ) ) );
      keepgoing := (null(explode(num)))
   end
end;

对令人费解的转换感到抱歉。如果您还知道一种更简单的读取整数的方法,我也将不胜感激。

4

1 回答 1

1

您的逻辑在这里有缺陷。你想要keepgoing := not (null (explode num))。正确的?这种变化对我来说效果很好。您需要实现删除最后的换行符(所以 null explode 做你想要的)并解析一个多于一个数字的行,但你基本上有正确的想法。

于 2013-10-26T18:55:54.913 回答