Barry Jay dalam bukunya membuat beberapa klaim berani - pada dasarnya dengan mengatakan bahwa, pada intinya sebuah program, semuanya adalah atom atau komposisi. Maka hal-hal dapat dengan mudah diulang, disaring, diperbarui, hanya dengan menavigasi hubungan komposisi ini.
Apakah ini perbatasan baru dalam Ilmu Komputer untuk bahasa komputer - atau apakah kita akan kembali ke LISP?
fl.formal-languages
hawkeye
sumber
sumber
Jawaban:
Salah satu manfaat utama dari karya terbaru Jay adalah mengurangi kode boilerplate yang perlu ditulis untuk melintasi struktur data untuk melakukan operasi seperti peta . Kalkulus pola memungkinkan seseorang untuk menulis kode traversal sekali untuk semua struktur data dan membuatnya berlaku untuk struktur data Anda sendiri. Ini tentu saja mengurangi jumlah kode yang diperlukan, tetapi tidak memungkinkan Anda untuk menulis program apa pun yang tidak dapat Anda tulis. Tentu saja ada banyak ide menarik dalam karya ini, tetapi masih harus dibuktikan bahwa itu benar-benar berfungsi.
sumber
Saya tidak terbiasa dengan karya Barry Jay baru-baru ini, tetapi pekerjaannya yang lebih tua mencakup hal-hal yang tidak dapat Anda lakukan di Lisp, karena jenisnya memberikan informasi tambahan.
Misalnya, Anda ingin menentukan ukuran struktur data Lisp. Ini 1 untuk atom, dan n untuk daftar n atom, dan lebih umum ukuran (x) + ukuran (y) untuk
(cons x y)
.Sekarang masukkan jenis ke dalam campuran. Ukuran daftar adalah panjangnya. Sekarang berapa ukuran daftar daftar atom? Jika Anda menganggap struktur data ini sebagai daftar (yang unsur-unsurnya adalah daftar atom), jawabannya adalah panjang daftar. Jika Anda menganggap struktur data ini berisi atom yang kebetulan disimpan dalam daftar daftar, jawabannya adalah jumlah dari panjang daftar elemen.
Jenis memungkinkan Anda untuk membedakan antara dua tampilan (bentuk) dari data mentah ini. Anda memerlukan sistem tipe yang memungkinkan Anda membedakan (Daftar) (Daftar Atom) dan (Daftar Daftar) (Atom). Implementasi paling umum dari perbedaan ini adalah dengan kelas tipe (seperti dalam Haskell).
sumber