Apa batas teoretis Bahasa Pemrograman Strategi?

10

Stratego adalah bahasa transformasi pemrograman / Menulis Ulang DSL.

Anthony Sloane telah melakukan beberapa pekerjaan melakukan implementasi yang berjalan di Scala .

Apa batas teoritis Stratego sebagai bahasa fungsional? (terlepas dari implementasi). Bisakah seseorang menulis ycombinator pesanan aplikatif di Stratego?

hawkeye
sumber
Pertanyaan yang sangat menarik.
Dave Clarke
Apakah Anda benar-benar bermaksud menautkan ke dua varian sepele dari kertas yang sama?
Randall Schulz
Penyempurnaan dari pertanyaan ini: Apa kelebihan & kerugian yang ada dari memperluas bahasa pemrograman dengan cara ini, yang bertentangan dengan teknologi makro?
Charles Stewart

Jawaban:

6

Saya akan coba menjawabnya, meskipun saya tidak punya program konkret untuk Anda coba. Dalam satu entri blog Eelco Visser Anda dapat melihat tangkapan layar yang pada dasarnya berisi kalkulus lambda yang disandikan dalam Stratego (saya yakin kode ini tersedia di tempat lain). Dia menghadirkan seorang juru bahasa untuk kalkulus lambda di Stratego. Agaknya, ini cukup untuk menunjukkan bahwa Stratego Turing-lengkap.

Jika Anda tertarik pada gagasan ekspresif yang lebih spesifik, maka saya sarankan Anda mengulangi pertanyaan Anda.

Dalam hal penggunaan praktis, saya menemukan batasan utama Stratego bahwa itu hanya beroperasi pada satu struktur data, yaitu pohon yang ditransformasikan. Menggunakan struktur data lain seperti tabel simbol tidak wajar (setidaknya di Stratego dari 5+ tahun yang lalu). Meskipun Stratego ideal untuk transformasi pada satu pohon, melakukan operasi pada dua pohon secara bersamaan tidak mudah.

Dave Clarke
sumber