Singkatnya dan bagi mereka yang tidak mengetahuinya, fungsi / operator / konstruksi Lisp semuanya seragam disebut seperti ini:
(function arg0 arg1 ... argN)
Jadi apa yang dalam bahasa seperti-C yang akan Anda ungkapkan
if (a > b && foo(param))
ditransformasikan menjadi sejenis kelamin Lisp
(if (and (> a b) (foo param)))
. Ketika segala sesuatunya menjadi lebih nyata / rumit, begitu pula ekspresi s yang sesuai, untuk saya.
Saya sadar bahwa ini kemungkinan besar merupakan pertanyaan subyektif, tetapi - apakah bagi banyak peretas Lisp ini gangguan kecil yang harus selalu dihadapi?
Atau apakah orang terbiasa dengan sintaksis ini (cepat atau lambat)?
Dalam kasus apa pun, apakah menambahkan terobosan (bahwa Anda tidak akan menambahkan setara C Anda, paling sering) untuk keterbacaan ide yang baik, terutama dalam jangka panjang? Saran lain akan diterima.
sumber
Jawaban:
Bagaimana Anda menguraikan
Pohon parse mungkin terlihat seperti itu
hmm ... mari membuat serial pohon ini menjadi daftar, notasi awalan
Format pohon parse ini cukup mudah untuk dimanipulasi, tapi saya punya satu masalah. Saya benci pemisah. Saya suka terminator. Pada saat yang sama, saya suka menaburkan di ruang putih.
hmm ... spasi putih tambahan membuat hal-hal tertentu lebih sulit diurai ... Mungkin saya bisa membuat aturan bahwa pohon itu direpresentasikan sebagai (daun akar daun daun).
Sekarang serialisasi pohon parse saya adalah lisp (ganti nama fungsi untuk diterapkan, dan ini mungkin berjalan). Jika saya ingin program yang menulis program, senang rasanya memanipulasi pohon parse.
Ini tidak sepenuhnya bagaimana s-ekspresi muncul, tetapi itu diidentifikasi awal, dan itu adalah salah satu fitur yang digunakan programmer cadel. Program kami sudah dipra-parsing dalam beberapa hal, dan menulis program untuk memanipulasi program cukup mudah karena formatnya. Itu sebabnya kurangnya sintaksis terkadang dianggap sebagai kekuatan.
Tetapi seperti yang dikatakan David, gunakan editor penyadaran ekspresi-s. Anda lebih cenderung kehilangan jejak kurung kurawal dalam ekspresi-s daripada kurung kurawal dalam xml (
</foo>
hanya tutup<foo>
, tetapi paren kanan menutup APAPUN ekspresi-APAPUN). Dalam raket, penggunaan tanda kurung siku untuk beberapa ekspresi, ditambah dengan gaya indentasi yang baik, memperbaiki sebagian besar masalah.Versi lisp:
Lumayan.
sumber
Apa yang benar-benar baik tentang s-exp adalah bahwa setelah waktu yang singkat, Anda tidak melihatnya lagi, itu seperti python di mata Anda TETAPI komputer masih memiliki pohon itu dengan mudah.
Jadi indentasi otomatis, tidak ada ambiguitas, Anda tidak perlu menekan tab dua kali atau sesuatu seperti itu ketika Anda ingin mengakhiri blok.
Jika Anda memilih beberapa kode acak, semuanya mudah di-indentasi dengan hanya satu perintah dari editor favorit Anda
Anda dapat menavigasi kode Anda dengan sangat mudah, melompat antara s-exp, menukar mereka dan sebagainya dengan editor yang baik
Plus, karena data yang Anda manipulasi sama dengan kode yang Anda tulis, Anda bisa menggunakan bahasa yang sama untuk memanipulasi kode Anda, kan?
Nah, Anda bisa melakukannya, itulah makro, Anda memanipulasi kode yang Anda tulis sebelum dievaluasi seperti daftar lainnya, itu sebabnya dikatakan bahwa Lisp adalah "Bahasa Pemrograman yang Dapat Diprogram". Anda menulis kode yang menulis kode untuk Anda.
Berikut adalah artikel bagus yang menggambarkan sifat Lisp dan mengapa programmer Lisp menyeringai ketika mereka melihat XML.
sumber