Menerapkan Semantik Denotasional untuk merancang Program

30

Saya telah membaca sedikit tentang denotational semantic (DS) dan saya sangat tertarik dengan proses mendesain program komputer di mana jenis dan fungsi memiliki pemetaan yang kuat dan jelas untuk matematika.

Apakah ada sumber daya yang membahas perancangan program berdasarkan DS secara detail? Saya telah melihat beberapa perawatan yang dangkal dari subjek.

Saya fasih berbahasa Haskell, Scala, Common Lisp, dan sedikit Skema sehingga sumber daya apa pun yang menggunakan bahasa-bahasa itu akan sangat dihargai.

Tim Stewart
sumber
7
Anda harus memeriksa karya oleh Conal Elliott: conal.net
2
Isomorfisma Curry-Howard adalah kata kunci, jika Anda belum tahu.
pedrofurla
2
Saya memikirkan hal serupa. Saya mencoba merancang simulasi numerik poin, benda kaku dan cairan. Ini ( github.com/takagi/SimulationDSL ) adalah salah satu percobaan saya di mana saya menyatakan aljabar vektor dan persamaan parsial dalam Haskell DSL. Saya juga memeriksa pekerjaan Conal Elliott.
3
Anda harus memeriksa LtU . Mungkin ada beberapa diskusi lama yang baik di sana, atau setidaknya pertanyaan Anda akan lebih cocok di sana daripada di SO
3
Anda mungkin ingin membaca Samuel Kamin "Semantik berorientasi implementasi dari kombinator pencetakan cantik Wadler". Ini membandingkan pendekatan operasional dan denotasional untuk menerapkan contoh dunia nyata yang terkenal dan mencakup advokasi untuk pendekatan denotasional.
stephen tetley

Jawaban:

13

Desain denotasional ( desain program yang berakar dan mengalir dari semantik denotasional) adalah metodologi utama saya. Beberapa tahun yang lalu ketika menulis tentang FRP, saya menjadi lebih jelas tentang apa yang telah saya lakukan. Lihat pemrograman reaktif fungsional Push-pull . Untuk deskripsi yang lebih eksplisit tentang paradigma dan berbagai contoh, lihat Desain denotasi dengan morfisme kelas tipe . Begitu saya sadar akan polanya, saya mulai mencarinya di mana-mana. Ketika gagal, saya tahu saya mengalami kebocoran abstraksi. Untuk deskripsi awal dan informal, lihat posting blog Luke Palmer Semantic Design .

Saya selalu tertarik dengan aplikasi desain denotasional, jadi saya ingin mendengar tentang penjelajahan Anda.

Conal
sumber
Terima kasih atas sumber daya yang luar biasa. Saya akan memeriksa mereka sebelum saya menandai pertanyaan sebagai dijawab.
Tim Stewart
Terima kasih telah memberikan tautan ke pekerjaan Anda! Ini kedua kalinya saya menoleh untuk mempelajarinya. Sayangnya, conal.net tidak menjawab. Apakah ada tempat lain di mana orang bisa mendapatkannya?
imz - Ivan Zakharyaschev
1
Baiklah, kita juga bisa membaca github.com/conal/talk-2014-bayhac-denotational-design/blob/…
imz - Ivan Zakharyaschev
1
@ imz - IvanZakharyaschev Maaf. Server web saya turun. Cadangkan sekarang. Mudah-mudahan saya akan segera dimigrasi, dan akan lebih stabil.
Conal
7

Kami telah menerapkan semantik denotasional untuk desain bahasa itu sendiri, dengan alasan bahwa desain bahasa, khususnya, bahasa khusus domain, harus dimulai dengan definisi semantik. Jika Anda tertarik pada detailnya, Anda mungkin ingin melihat Semantics-Driven DSL Design dan Semantics First! Memikirkan Kembali Proses Desain Bahasa .

Martin Erwig
sumber
Terima kasih atas sumber daya yang luar biasa. Saya akan memeriksa mereka sebelum saya menandai pertanyaan sebagai dijawab.
Tim Stewart