【问题标题】:Standard ml loop troubles标准 ml 循环故障
【发布时间】:2017-11-03 07:54:59
【问题描述】:

我正在设置一个函数,它将模拟一个循环,直到满足一个条件。

我的总体计划是使用递归,但我试图先了解基础知识。

我得到了一个基本函数,它使用 If 语句查看 X 的值是什么。我计划使用递归来使用 X 作为计数器,但我稍后会谈到。

我现在主要担心的是,我似乎只能在“then”语句之后执行 1 个命令。

fun whileloop (x,a) =
    if (x<4)
    then a+1 
    else a;

所以这个函数工作得很好,但似乎我能做的唯一命令是 a+1。如果我在那之后尝试执行任何其他命令,在 else 之前...它会失败。

例如,下面的代码对我来说会失败。

fun whileloop (x,a) =
    if (x<4)
    then a+1 
    print "Testing"
    else a;

我的最终目标是创建一个循环,该循环将一遍又一遍地执行多个动作,直到 X 达到零。我需要使用不同的功能执行 5-6 个动作。

【问题讨论】:

  • 如果您收到了完整的答案并且现在有后续问题,您应该将它们作为新问题提出。
  • a + 1 不是“命令”,实际上并没有任何事情。评估 a + 1 并丢弃结果是没有意义的。

标签: loops smlnj ml


【解决方案1】:

您可以使用分号运算符按顺序计算多个表达式:

( e1; e2; ...; eN )

例如,

fun iter n f = if n = 0 then () else (f n; iter (n-1) f)

【讨论】:

  • 这有助于表达是的,非常感谢。
猜你喜欢
  • 2015-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-07
  • 2018-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多