2010-12-29 11 views
10

純粋に機能的なプログラム用に仮想マシンを開発しています。すでに利用可能なさまざまなHaskellモジュールをテストして使用したいと考えています。 VMは、型指定されていないラムダ計算で基本的に項を取ります。私は現代のHaskellモジュール(例えば、MPTC、パターンガードなど)からそのような表現を抽出するには、何が良い方法だろうと思っています。私は少しの研究をしましたが、すでにこれを行うツールではないようです(私は誤解されて喜んでいるでしょう)、それは大丈夫です。私はアプローチを探しています。Haskell desugaringの戦略

GHCコアは、特にVMの動作の1つが評価順序を大幅に変更することが多いため、操作上重視されています。ラムダ計算とより密接に対応する、アクセス可能な中間表現がありますか?

+0

コアルートとは、あなたがケースステートメントによって動かされていることを意味しますが、それらを元に戻して教会エンコーディングに変換することができます。 – sclv

+0

@sclv、うーん、それは良い点です。 – luqui

答えて

5

GHCの外部コアは、GHCを使用して取得しようとしているラムダ計算とほぼ同じです。あなたが権利をジャンプしたい場合Hereは、ストレート式の型へのリンクです。

  • Library外部コアファイル
  • を処理するためにどのようにその使用上のGHC
  • 学術papergenerate外部コアへ
+0

私はそれについていくかどうかは分かりませんが、これはコア処理を始めるための素晴らしい答えです。 – luqui

1

お... Haskell Kernelについて聞いたことがありますか?私はあなたが何を必要とするか分からない。それは何らかの種類のハスケルであり、本質的にHaskellの報告書で定義されています。これがあなたが必要とするものかどうかは分かりません。

3

EHCは表現の間にこのフローを持っていました:

HS - > EH - > Cor e - > Grin - > Silly

HSは明らかにハスケルであり、EHはタイプチェッカーであまり甘くて使用されません。コアはGHCのCore and GrinとSillyのアナログです。

Jeroen FokkerのEHCのアーキテクチャを説明している論文がありますが、これは私が上記を引用したものですが、おそらく古いです(私はEHCが依然として愚かな表現を使用しているのか分かりません)。私は、EHCが内部表現のそれぞれに対してパーサとかなりのプリンタを提供していると思います。

YHCからも、GHCコアの方がより好感を持っていることがわかりましたが、「現代的な」Haskellをヨークにコンパイルする手段があるかどうかはわかりません。

+0

ええ質問した直後にEHCが見つかりました。それはハスケルではありませんが、それは私が読むのが非常に難しいと思われるいくつかの面倒なアトリビュート文法です。ああ、弾丸を噛まなければならないかもしれませんが、アントワーヌが提案したツールでどのくらい手に入れることができるかによって... – luqui