この記事は、ChrisHodappの投稿「EmbeddingHaskell:Compilers」と「 Compilingcompilers」の翻訳です。この投稿では、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, .