我试图在 Haskell 中可视化一些简单的自动物理系统(如钟摆、机械臂等)。通常这些系统可以用如下等式来描述
df/dt = c*f(t) + u(t)
其中u(t)
代表某种“智能控制”。这些系统看起来非常适合功能响应式编程范式。
因此,我拿起了 Paul Hudak 的书“The Haskell School of Expression”,发现那里介绍的领域特定语言“FAL”(用于功能动画语言)实际上对我的简单玩具系统非常有效(尽管有些功能,特别是integrate
,似乎有点懒惰而无法有效使用,但很容易修复)。
我的问题是,对于当今更高级甚至实际的应用程序,更成熟、最新、维护良好、性能调整的替代方案是什么?
这个 wiki 页面列出了 Haskell 的几个选项,但我不清楚以下方面:
“反应式”的状态,来自 Conal Eliott 的项目,他(据我所知)是这种编程范式的发明者之一,看起来有点陈旧。我喜欢他的代码,但也许我应该尝试其他更新的替代方案?在语法/性能/运行时稳定性方面,它们之间的主要区别是什么?
引用 2011 年的一项调查,第 6 节,“ ...... FRP 实现在性能上仍然不够高效或可预测,无法在需要延迟保证的领域中有效使用...... ”。尽管调查提出了一些有趣的可能优化,但考虑到 FRP 已经存在超过 15 年这一事实,我的印象是,至少在几年内,这个性能问题可能非常难以解决,甚至本来就难以解决。这是真的?
该调查的同一作者在他的博客中谈到了“时间泄漏” 。这个问题是 FRP 独有的,还是我们在使用纯非严格语言编程时通常遇到的问题?如果性能不够,您是否曾经发现随着时间的推移稳定基于 FRP 的系统太难了?
这仍然是一个研究级项目吗?工厂工程师、机器人工程师、金融工程师等人是否真的在使用它们(以适合他们需要的任何语言)?
虽然我个人更喜欢 Haskell 实现,但我愿意接受其他建议。例如,拥有一个 Erlang 实现会特别有趣 --- 这样就很容易拥有一个智能、自适应、自学习的服务器进程!