Dieser Artikel ist eine Übersetzung von Chris Hodapps Beitrag Einbetten von Haskell: Compiler und Kompilieren von Compilern. In diesem Beitrag untersucht der Autor verschiedene Ansätze zur Verwendung von Haskell zum Schreiben von Code für eingebettete Systeme. Geben wir dem Autor das Wort.
In meinem letzten Beitrag wurde erwähnt, dass einige Dinge einer besseren Erklärung bedürfen, weil ich immer versuche, sie zu erklären und zu klären.
In diesem Blog geht es um die Verwendung von Haskell mit eingebetteten Systemen. Was bedeutet das überhaupt? Wir sehen einige breite Kategorien (die die Folien auf der letzten Seite sowie unsere Linkseite widerspiegeln ):
- Vollständige Kompilierung: Kompiliert Haskell-Code für eine Inline-Zuweisung.
- Begrenzte Kompilierung: Kompilierung einer begrenzten Teilmenge des Haskell-Codes für eine Inline-Zuweisung.
- EDSL- und Compiler-Hosting: Hosting in Haskell, EDSL und Compiler zur eingebetteten Verwendung.
Soweit ich weiß, habe ich mir diese Kategorien ausgedacht. Wenn jemand eine etabliertere Klassifizierung, passendere Namen oder Beispiele desjenigen kennt, der zuerst darüber geschrieben hat, lassen Sie es mich bitte wissen.
Es könnte wie eine einseitige, willkürliche Gruppierung aussehen; es ist irgendwie so. Die Gemeinsamkeit ist, dass in allen Fällen Haskell verwendet wird, um etwas (Programme, Schemata, Spezifikationen, nennen Sie es wie Sie wollen) für einen Inline-Zweck auszudrücken. Dazu später mehr.
Ich schließe Dinge wie Cryptol und Idris aus, da sie in Haskell implementiert und für eingebettete Plattformen geeignet sind und selbst verschiedene Sprachen sind. Ich kann diese Unterscheidung in Zukunft willkürlich fallen lassen, wenn ich möchte ...
Komplette Zusammenstellung
, , 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, .