【问题标题】:freeze simulation in gloss Haskell在光泽 Haskell 中冻结模拟
【发布时间】:2017-01-11 22:46:34
【问题描述】:

我正在使用光泽库来描绘模拟。是否有一个函数可以在条件为真时停止simulation 函数。只有最后绘制的图片应保留在窗口中。

提前致谢

【问题讨论】:

  • 如果只添加另一个状态变量来记录模拟是否应该被冻结呢?如果isFrozen 的值为True,您只需返回当前模型;否则你会进化它 - 即应用阶跃函数。

标签: function haskell simulation gloss


【解决方案1】:

正如@ErikR 建议的那样,您所描述的内容相当于一旦您达到您正在寻找的状态就不再更新模型。您可以定义一个作用于步进函数的组合器,精确地执行以下操作:

untilModel
  :: (ViewPort -> Float -> model -> model)
  -> (model -> Bool)
  -> (ViewPort -> Float -> model -> model)
untilModel step isFrozen v f m =
  if isFrozen m then m
  else step v f m

如果你有一个step 函数,并且你想在isFrozen 成为模型的真值时停止模拟,你可以简单地传递simulate 改变的阶跃函数step `untilModel` isFrozen

【讨论】:

    猜你喜欢
    • 2017-05-14
    • 1970-01-01
    • 1970-01-01
    • 2021-04-06
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多