嵌入Haskell:编译器和编译器编译

本文是Chris Hodapp的“嵌入Haskell:编译器和编译器”一文的翻译,在本文中,作者探索了使用Haskell编写嵌入式系统代码的不同方法。让我们请作者发言。



在我的上一篇文章中,提到某些事情需要更好的解释,因为我一直在努力解释和阐明。



这个博客是关于在嵌入式系统上使用Haskell的。那有什么意思?我们看到几个大致的类别(反映了最后一页以及链接页面上的幻灯片):



  • 完全编译:编译Haskell代码以进行内联分配。
  • 有限编译:内联分配的Haskell代码的某些有限子集的编译。
  • EDSL和编译器托管:在Haskell,EDSL和嵌入式编译器中托管。


据我所知,我想出了这些类别。如果有人知道一个更成熟的分类,更合适的名称或最先写过它的人的例子,请告诉我。



看起来像是单方面的任意分组;就像那样。通用性是,在所有情况下,Haskell都用于内联目的表达某些内容(程序,模式,规范,随便叫它)。稍后对此进行更多讨论。



我排除了Cryptol和Idris之类的东西,因为它们是在Haskell中实现并适用于嵌入式平台的,它们本身就是不同的语言。如果我希望的话,将来我可以任意放弃这种区别。



完成编译



, , Haskell — Haskell , ( , ). Compiling to Embedded Targets .



, . Haskell . , Haskell .



Ajhc, , JHC, Kiwamu Okabe METASEPI, , — ARM Cortex-M3 / M4. Kiwamu Haskell . ATS .



HaLVM Galois, , .





( ), , . (, , , : CλaSH Haskell).



GHC , GHC Haskell .



Compiling for FPGA/ASIC .



EDSL



Code Generation EDSLs Circuit Design EDSLs . , , .



. EDSL (Embedded Domain-Specific Language, - ) Haskell, . .



: , , Haskell. Haskell — . , .



:





:



  • Haskell, , ( ). , , .
  • . , Copilot / , SBV , Atom .


, Haskell . , , , .





, , , , .



:





? (, . , , Lava .)



. ( ), Haskell. , :



  • ,
  • ( Haskell, - , , ),
  • ( , LLVM, C, VHDL, , ..).


«» Haskell.



, Haskell - . Haskell, .




All Articles