Este artigo é uma tradução da postagem Embedding Haskell: Compilers e compiladores de Chris Hodapp . Nesta postagem, o autor explora diferentes abordagens para usar Haskell para escrever código para sistemas embarcados. Vamos passar a palavra ao autor.
No meu último post , mencionei que algumas coisas precisam ser melhor explicadas porque estou sempre tentando explicar e esclarecer.
Este blog é sobre como usar Haskell com sistemas embarcados. Afinal, o que isso quer dizer? Vemos algumas categorias amplas (que refletem os slides da última página, bem como nossa página de links ):
- Compilação completa: compila o código Haskell para uma atribuição inline.
- Compilação limitada: Compilação de algum subconjunto limitado de código Haskell para uma atribuição inline.
- Hospedagem EDSL e Compilador: Hospedagem em Haskell, EDSL e compilador para uso embarcado.
Pelo que eu sei, criei essas categorias. Se alguém conhece uma classificação mais estabelecida, nomes ou exemplos mais apropriados de quem escreveu sobre ela primeiro, por favor me avise.
Pode parecer um agrupamento arbitrário unilateral; é mais ou menos assim. A semelhança é que em todos os casos Haskell é usado para expressar algo (programas, esquemas, especificações, chame como quiser) para um propósito embutido. Mais sobre isso mais tarde.
Excluo coisas como Cryptol e Idris porque, sendo implementadas em Haskell e adequadas para plataformas embarcadas, são linguagens diferentes. Posso abandonar arbitrariamente essa distinção no futuro, se quiser ...
Compilação completa
, , 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, .