Halaman "Skema Lanjutan: Beberapa Bit Nakal" menyatakan:
Lanjutan adalah konstruksi aliran kontrol yang kuat dari mana hampir semua struktur aliran kontrol lainnya [...] dapat diturunkan.
Saya berpikir bahwa Skema ini call/cc
, yang terkait (*) ke operator J Peter Landin ini, dapat digunakan untuk mengimplementasikan setiap struktur kontrol aliran dikenal?
Dengan "control flow structure" Saya secara khusus memikirkan deskripsi Wikipedia tentang mereka, misalnya pengecualian, coroutine, benang hijau dan sebagainya.
Secara khusus, apakah ada contoh struktur aliran kontrol yang tidak dapat diimplementasikan menggunakan call/cc
?
(*) Saya belum bisa menggali kertas yang menetapkan yang call/cc
sekuat operator J. Sebuah makalah oleh Felleisen (yang saya belum baca dan diakui memiliki masalah untuk memahaminya sepenuhnya) menyelidiki ini, dan tampaknya menyimpulkan bahwa meskipun mereka berada di kelas kompleksitas yang berbeda, mereka secara formal setara.
(Perhatikan juga bahwa saya telah memperbarui pertanyaan berdasarkan komentar di bawah)
Memperbarui
Berdasarkan jawaban yang sangat baik dari @Neel di bawah ini, saya telah melihat situs-situs yang mengomentari kelanjutan yang dibatasi dan tidak didahulukan , dan memang terlihat bahwa sementara call/cc
, yang tidak direvisi, tidak cukup. Sementara itu, kelanjutan kelas pertama, dibatasi (seperti shift/reset
) dapat digunakan, tampaknya, untuk mengekspresikan struktur aliran kontrol apa pun.
call/cc
tidak dapat mengungkapkan pengecualian jika tidak ada negara . (Seperti yang ditunjukkan oleh Thielecke, pengecualian dapat diimplementasikan dengan mengedarkan dua kelanjutan, satu untuk program dan yang lainnya untuk penangan pengecualian, tetapi itu membutuhkan lebih dari sekadar call/cc
.)
amb
kabur, -operator, dan sebagainya.