Bu ilginç bir soru! Anthony'nin cevabının önerdiği gibi, tip kontrolü için terimleri değerlendirmek için zaten bir tercümanınız olması koşuluyla , bağımlı olmayan bir işlevsel dili derlemek için olağan yaklaşımları kullanabilirsiniz .
Edwin Brady'nin benimsediği yaklaşım budur. Şimdi bu kavramsal olarak daha basit, ancak tip kontrolü yaparken derlemenin hız avantajlarını kaybediyor. Bu birkaç şekilde ele alınmıştır.
İlk olarak, dönüşüm kontrolünü gerçekleştirmek için terimleri bayt koduna anında derleyen sanal bir makine uygulanabilir. Bu, Benjamin Gregoirevm_compute
tarafından Coq'ta uygulanan arkasındaki fikir . Görünüşe göre orada da bu tam olarak bu konuda Dirk Kleeblatt tarafından tez, ancak gerçek makine koduna ziyade sanal makine aşağı.
İkincisi, daha geleneksel bir dilde kod üretilebilir; bu, yürütüldükten sonra, bağımlı olarak yazılan bir programı yazmak için gerekli olan tüm dönüşümleri kontrol eder. Bu, bir Agda modülünü yazmak için Haskell'i kullanabileceğimiz anlamına gelir. Kod derlenebilir ve çalıştırılabilir ve kabul ederse, bağımlı türdeki kodun iyi yazıldığı varsayılabilir (kısıtlama uygulaması ve derleyici hataları). İlk olarak Mathieu Boesflug tarafından önerilen bu yaklaşımı duydum .
*
ocamlopt
veya GHC :-) (Bu arada Coq ve Agda yaklaşımıdır.)