gpt4 book ai didi

functional-programming - 函数式编程如何应用于模拟?

转载 作者:行者123 更新时间:2023-12-03 13:31:04 28 4
gpt4 key购买 nike

除了标题中的常见问题之外,


函数式程序员和函数式语言如何进入模拟领域,而模拟似乎是最自然地由面向对象的语言处理的?
是否有(大多数)功能样式编写的复杂模拟的开源示例?
为了从功能范例中进行仿真,OO程序员需要什么角度的改变?


我在学习Clojure的创建者Rich Hickey如何特别设法驯服OO编程和可变状态(例如可变状态)的“偶然复杂性”时问这个问题。 Clojure对身份和状态的分离很有意义(Hickey的ants.clj在研究列表中)。另一个相关领域是对游戏使用函数式编程,这些函数通常是模拟,到处都是有状态的“事物”。有一些关于FP和游戏的文章/论文,欢迎更多。

也许经验丰富的函数式程序员可以提供其他背景知识和建议,以帮助您如何将思维重新定位为函数式风格,尤其是对于仿真。提前致谢!

最佳答案

Michal的回答很好,但是我想我会再添加几个我个人认为有帮助/有趣的例子。

第一个是Lau Jenson发表的关于functional fluid dynamics的帖子(和代码)。尽管他肯定在这里追求速度可变的路线,但风格却相当实用。我敢打赌Clojure 1.3可以(合理地)以合理的性能一成不变地做到这一点。

接下来是在Clojure中实现的simple Snake game。尽管在一个小时左右的时间内就足够容易阅读,而且样式确实令人愉快且具有凝聚力。

另外,一些看起来不错的代码(我认为!)是对神经网络的代码建模。 Jeff Foster有一些single layer感知器代码,还有一些idiomatic revisions of the code。值得一看,即使您不熟悉NN。他也有一些有关流体动力学的最新文章,尽管这次是在Haskell。 (Part IPart II)我认为他的implementation of the Game of Life(&Part II)也很有趣。

最终,正如Michal在我之前提到的那样,Brian Carper正在研究a RPG in Clojure。他在游戏中recently posted some artwork,所以我敢打赌它仍在进行中;)

我喜欢使用序列库来处理大量数据;使用像mapreduce这样的抽象以及像juxt这样的有趣,方便的工具,而不是简单的命令式迭代,会感觉更加自然。我发现,通过使用Clojure /功能性langs重新实现众所周知且已实现的命令式算法,您确实需要缴税。

玩得开心!

关于functional-programming - 函数式编程如何应用于模拟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3431654/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com