Este artículo es una traducción de la publicación de Chris Hodapp Incorporación de Haskell: compiladores y compilación de compiladores En esta publicación, el autor explora varios enfoques para usar Haskell para escribir código para sistemas integrados. Demos la palabra al autor.
En mi último post , mencioné que algunas cosas requieren una mejor explicación porque siempre trato de explicar y aclarar.
Este blog trata sobre el uso de Haskell con sistemas integrados. ¿Y eso que significa? Vemos un par de categorías amplias (que reflejan las diapositivas en la última página, así como nuestra página de enlaces ):
- Compilación completa: compila el código Haskell para una asignación en línea.
- Compilación limitada: compilación de un subconjunto limitado de código Haskell para una asignación en línea.
- Alojamiento EDSL y compilador: alojamiento en Haskell, EDSL y compilador para uso integrado.
Hasta donde yo sé, se me ocurrieron estas categorías. Si alguien conoce una clasificación más establecida, nombres o ejemplos más apropiados de la persona que escribió sobre ella primero, hágamelo saber.
Puede parecer una agrupación arbitraria unilateral; es algo así. La generalidad es que en todos los casos Haskell se usa para expresar algo (programas, esquemas, especificaciones, llámelo como quiera) con un propósito en línea. Más sobre esto más adelante.
Excluyo cosas como Cryptol e Idris porque, al estar implementadas en Haskell y ser adecuadas para plataformas integradas, son lenguajes diferentes. Puedo eliminar arbitrariamente esta distinción en el futuro si lo deseo ...
Compilación 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, .