本文是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).
EDSL
Code Generation EDSLs Circuit Design EDSLs . , , .
. EDSL (Embedded Domain-Specific Language, - ) Haskell, . .
: , , Haskell. Haskell — . , .
:
:
- Haskell, , ( ). , , .
- . , Copilot / , SBV , Atom .
, Haskell . , , , .
, , , , .
:
- «» Haskell , - ( , , main).
- Atom , Atom ( , , Atom).
- Ivory , Ivory eff
Module ( , Ivory). - CλaSH Signal ( , , topEntity).
? (, . , , Lava .)
. ( ), Haskell. , :
- ,
- ( Haskell, - , , ),
- ( , LLVM, C, VHDL, , ..).
«» Haskell.
, Haskell - . Haskell, .