我试图在Haskell中可视化一些简单的自动物理系统(如摆,机器臂等)。这些系统通常可以用方程描述,例如
df/dt = c*f(t) + u(t)
其中u(t)
代表某种形式的“智能控制”。这些系统看起来非常适合函数响应式编程范例。
因此,我找到了Paul Hudak的书《The Haskell School of Expression》,发现其中介绍的领域特定语言“FAL”(用于函数动画语言)实际上非常适合我的简单玩具系统(尽管某些函数,特别是integrate
,似乎有点过于懒惰,不够高效,但很容易修复)。
我的问题是,对于更高级甚至实用的应用程序,有什么更成熟,最新,维护良好,性能调整的替代品?
这个维基页面列出了Haskell的几个选项,但我不清楚以下几个方面:
"Reactive"这个项目来自Conal Eliott,他是这种编程范式的发明者之一(据我所知)。然而,这个项目似乎有点过时了。我喜欢他的代码,但也许我应该尝试其他更为更新的替代方案?它们主要的区别是什么,从语法/性能/运行稳定性方面来看?
引用2011年一项survey第6节的内容:“...... FRP实现的效率和性能仍然不足以在需要延迟保证的领域中有效使用......”。尽管该调查提出了一些有趣的可能优化措施,但由于FRP已经存在超过15年,我认为这种性能问题可能是非常或甚至本质上难以在未来几年内解决的。这是真的吗?
该调查的作者在他的blog中谈到了“时间泄漏”的问题。这个问题是FRP独有的,还是我们在使用纯粹的非严格语言编程时普遍存在的问题?如果性能不够好,你是否曾经发现过很难使基于FRP的系统稳定下来?
这仍然是一个研究级别的项目吗?像植物工程师、机器人工程师、金融工程师等人是否真正在使用它们(以适应他们的需求的任何语言)?
虽然我个人更喜欢使用Haskell实现,但我也愿意听取其他建议。例如,使用Erlang实现会特别有趣 --- 这样很容易拥有一个智能、自适应、自学习的服务器进程!