嵌入式环境中的函数式编程是否存在特殊挑战?

spa*_*e78 16 embedded haskell functional-programming

所以我开始感受到功能性编程与命令式编程的区别.就像任何好的转换器一样,我正在用Haskell锤子查看事物,并试图想象我的嵌入式编程工作如何被塑造成适合该工具的钉子.

这让我想到了这个问题.嵌入式环境是功能编程眼中的通用计算的特例还是仅仅是一般情况的另一种形式?IO中的挑战是全部吗?我的嵌入式工作通常需要大约90-95%的外围IO工作,最后一点点的东西是我可以适应的算法工作,并且仍然能够及时回到我的IO.这种工作是否使功能性程序不能满足我的需求?

最后,如果您可以建议嵌入Haskell项目的任何项目,那将非常感激.谢谢.

zma*_*ian 13

有许多有希望的项目可以将函数式编程引入嵌入式编程领域.

似乎一种常见的方法是利用类型安全性和其他正确性功能,但放弃像ghc这样的重量级运行时.由于放弃了运行时,您放弃了垃圾收集等功能.相反,嵌入式Haskell项目使用输出实时C代码的嵌入式DSL语言.

嵌入式项目使用混合C,C++和Haskell代码,而不是纯粹的功能项目.从Haskell代码生成的C代码不是惯用的C代码,因此项目上的协作者通常需要熟悉Haskell语法才能参与.

Galois的Copilot项目是广泛记录的嵌入式Haskell项目模式之一.

http://corp.galois.com/blog/2010/9/22/copilot-a-dsl-for-monitoring-embedded-systems.html

Copilot使用似乎很受欢迎的Atom DSL

http://hackage.haskell.org/cgi-bin/hackage-scripts/package/atom-0.0.2

还有一个适度活跃的谷歌集团

https://groups.google.com/forum/#forum/fp-embedded

  • @Alexandre C.:在像Atom这样的情况下,你的Haskell程序实际输出C. Atom库的设计控制了生成的C代码可以包含的构造类型.由于它是为嵌入式系统设计的,因此它不会生成使用动态内存分配等的代码. (3认同)