Ini pertanyaan yang menarik! Seperti jawaban Anthony menyarankan, seseorang dapat menggunakan pendekatan biasa untuk menyusun bahasa fungsional yang tidak tergantung, asalkan Anda sudah memiliki juru bahasa untuk mengevaluasi persyaratan untuk pengecekan tipe .
Ini adalah pendekatan yang diambil oleh Edwin Brady. Sekarang ini secara konsep lebih sederhana, tetapi tidak kehilangan keunggulan kecepatan kompilasi ketika melakukan pengecekan tipe. Ini telah dibahas dalam beberapa perilaku.
Pertama, seseorang dapat mengimplementasikan mesin virtual yang mengkompilasi istilah-istilah untuk byte-code on the fly untuk melakukan pemeriksaan konversi. Ini adalah ide di balik vm_compute
diterapkan dalam Coq oleh Benjamin Gregoire . Rupanya ada juga tesis ini oleh Dirk Kleeblatt pada subjek yang tepat ini, tetapi menurunkan kode mesin yang sebenarnya daripada mesin virtual.
Kedua, seseorang dapat menghasilkan kode dalam bahasa yang lebih konvensional yang, setelah dieksekusi, memeriksa semua konversi yang diperlukan untuk mengetik-periksa program yang diketik secara dependen. Ini berarti kita dapat menggunakan Haskell, misalnya, untuk mengetik-periksa modul Agda. Kode dapat dikompilasi dan dijalankan, dan jika diterima, maka kode dalam bahasa tipe dependen dapat diasumsikan diketik dengan baik (pembatasan implementasi dan kesalahan kompiler). Saya pertama kali mendengar pendekatan ini yang disarankan oleh Mathieu Boesflug .
∗
ocamlopt
atau GHC :-) (