Pertanyaan Apa perbedaan antara Lisp-1 dan Lisp-2?


Saya telah mencoba memahami perbedaan antara Lisp-1 dan Lisp-2 dan bagaimana hal ini berhubungan dengan Clojure tetapi saya masih tidak mengerti dengan benar. Adakah yang bisa mencerahkan saya?


76
2018-01-02 13:30


asal


Jawaban:


Menurut wikipedia:

Apakah ruang nama yang terpisah untuk fungsi merupakan keuntungan adalah sumber pertentangan dalam komunitas Lisp. Biasanya disebut sebagai Lisp-1 vs Lisp-2. Lisp-1 mengacu pada model Skema dan Lisp-2 mengacu pada model Common Lisp.

Ini pada dasarnya tentang apakah variabel dan fungsi dapat memiliki nama yang sama tanpa bentrok. Clojure adalah Lisp-1 artinya tidak mengizinkan nama yang sama digunakan untuk fungsi dan variabel secara bersamaan.


50
2018-01-02 14:52



Anda mungkin ingin membaca ini kertas oleh Richard Gabriel. Ini adalah ringkasan dari masalah-masalah yang dibahas oleh komunitas Lisp di Lisp1 vs Lisp2. Ini agak padat dan bergerak lambat di beberapa bagian pertama, tetapi jauh lebih mudah dibaca pada saat Anda melewati bagian 5.

Pada dasarnya, Lisp1 memiliki lingkungan tunggal yang memetakan simbol ke nilai, dan nilai-nilai itu dapat berupa "biasa" atau fungsi. Lisp2 memiliki (setidaknya) dua ruangnama (simbol memiliki slot untuk nilai fungsi mereka dan satu untuk nilai reguler). Jadi, di Lisp2, Anda dapat memiliki fungsi bernama foo dan nilai bernama foo, sedangkan di Lisp1, nama foo hanya dapat merujuk ke satu nilai (fungsi atau sebaliknya).

Ada beberapa pengorbanan dan perbedaan rasa di antara keduanya, tetapi bacalah kertas untuk detailnya. Buku Christian Queinnec, "Lisp in Small Pieces" juga memiliki diskusi tentang perbedaan yang ditenun melalui teks.


59
2018-01-02 17:43