【问题标题】:Functional languages that support the passing of stateful things as a parameter支持将有状态的事物作为参数传递的函数式语言
【发布时间】:2021-07-01 14:13:25
【问题描述】:

我刚开始学习函数式语言。

我目前正在考虑如何表示“有状态”,不断更新诸如钟摆的周期性摇摆或视频游戏中某些环境对象的移动之类的内容。

我想有一些带有递归和其他非纯循环函数的 hacky 解决方案,但我希望有一种方法可以随时间推移将某些东西表示为一个函数。

即我有一些想要表示的周期性运动,所以我构建了一些像sin x 这样的函数,并将代表我的计算机内部时钟不断更新的值传递给该函数。

我知道从我的计算机获取当前时间将基于每个请求,我可以编写一些命令式代码来无限循环,调用一些 get_time() 系统调用,然后用它调用我的功能语言函数价值,我真的只是希望这项工作已经在一些功能语言的标准库中为我完成。

在您所知道的任何函数式编程语言中,是否有与此功能类似的功能?

【问题讨论】:

    标签: time functional-programming state programming-languages


    【解决方案1】:

    要搜索的术语是“函数式反应式编程”。

    基本思想是在语言中引入“时变值”的概念。这些通常分为行为事件behavior 是一个类似于“时间”的值,它不断变化。 事件 是离散的,例如鼠标单击,或者当某些增加的行为值超过某个阈值时。 (我想我听说过 signal 这个词是 behavior 的同义词。)

    为了使时变值有用,使用时变值计算的结果也应该是时变值。例如,如果您提取当前时间的第二个字段,那应该是一个时变值,一遍又一遍地迭代 0 到 59。

    在这个想法上已经做了很多工作,但这里有一个 JavaScript 示例实现的链接,您可以在浏览器中试用:http://www.flapjax-lang.org/(注意http URL。该站点尚未更新最近,如果您使用 https 访问该站点,演示往往会失败。)我建议从教程开始:http://www.flapjax-lang.org/tutorial/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-20
      • 2019-09-11
      • 2019-07-16
      • 1970-01-01
      • 2023-01-01
      • 2011-06-11
      • 1970-01-01
      • 2019-12-20
      相关资源
      最近更新 更多