【问题标题】:Is is possible to read in a list of numbers in SML?是否可以读取 SML 中的数字列表?
【发布时间】:2013-11-05 05:05:47
【问题描述】:

我正在尝试用 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;

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

【问题讨论】:

    标签: input io sml smlnj


    【解决方案1】:

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

    【讨论】:

    • 谢谢。这更像是一种练习,因此不需要特别健壮。你的改变正是我想要的。有时问题只是一个简单的错误。
    猜你喜欢
    • 2017-08-04
    • 1970-01-01
    • 2018-11-22
    • 2016-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-11
    相关资源
    最近更新 更多