Apa yang paling canggih dalam pencarian enkapsulasi dalam pemrograman logika fungsional?

8

Saya terutama tertarik pada solusi untuk masalah yang dirangkum pencarian tergantung pada urutan evaluasi.

Menurut [1], pencarian terenkapsulasi dalam PAKCS tergantung pada urutan evaluasi, sementara di MCC, itu tidak, tetapi menggunakannya membutuhkan pengetahuan tentang implementasi kompiler dan tidak mengikuti spesifikasi bahasa Curry. Ini ditulis pada 2007, jadi tentu saja sudah ketinggalan zaman sekarang.

KiCS2 mengembalikan hasil dari pencarian dienkapsulasi di monad IO, tapi saya tidak mengerti mengapa.

[1] Braßel dan Huch, Pada Integrasi yang Lebih Ketat dari Pemrograman Fungsional dan Logika , Proc. APLAS 2007

Robin Green
sumber

Jawaban:

1

Alasan untuk menggunakan IO monad tampaknya dijelaskan dalam Braßel dan Huch dan Hanus, 2004, tetapi saya tidak dapat menemukan alasan yang jelas diberikan untuk menggunakan daftar alih-alih satu set. Saya kira begitu supaya daftarnya bisa dijabarkan dengan malas.

Tampaknya pendekatan yang dijelaskan dalam makalah 2007 tidak memuaskan karena beberapa alasan (saya tidak tahu mengapa), karena KiCS2 telah kembali ke "API" yang dijelaskan dalam makalah 2004, yaitu menggunakan monad IO. (Ada versi yang tidak aman yang tidak menggunakan monad IO, tapi itu tidak transparan secara referensi!)

Robin Green
sumber
untuk daftar-vs-set, saya percaya mereka telah menyebutkan bahwa mereka kadang-kadang mengembalikan multiset.
Erik Kaplun
1

Lihat http://www-ps.informatik.uni-kiel.de/kics2/lib/Findall.html : dikatakan bahwa IOpendekatan berbasis tidak digunakan dan cara yang dipilih bukan SetFunctionsmodul Curry , Desain baru ini menghilangkan IOnilai-nilai pengembalian yang dibungkus dan memiliki cara lain untuk menghindari kebocoran ketidakpastian dan referensi non-transparansi ke tanah FP murni.

Erik Kaplun
sumber
Saya menghapus diskusi tentang cara mengutip sumber di sini dengan benar. Mari kita lanjutkan obrolan , yang merupakan platform yang lebih tepat.
Raphael