Sto leggendo su LISP.
Capisco come la notazione del prefisso funzioni ad un certo livello, ma mi chiedevo se ci sono trucchi per renderlo intuitivo.
Sto leggendo su LISP.
Capisco come la notazione del prefisso funzioni ad un certo livello, ma mi chiedevo se ci sono trucchi per renderlo intuitivo.
La lettura mentale da sinistra a destra come lingua parlata con i verbi appropriati può aiutare. Ad esempio (+ 3 2) potrebbe essere "aggiungi tre e due". Nel caso più generale, puoi dire "esegui $ operazione su $ operandi". Applicato allo stesso caso: "Esegui l'operazione di aggiunta su tre e due".
Trucchi? Per cosa?
Non ti sembra ancora intuitivo perché il tuo parser mentale non è abituato. Diventerà migliore se lo usi e lo rileggi più e più volte.
Molte lingue usano una combinazione di prefissi, infissi e persino postfix.
Lisp usa solo il prefisso - di default. Se il peccato (x) è intuitivo dalla matematica, allora (sin x) non è lontano. Se mossa (cane, casa) è una chiamata di procedura tradizionale, quindi in Lisp è solo (sposta il cane a casa).
Lisp non fa alcuna eccezione per la matematica e tratta +, -, * e altri come le normali chiamate di funzione.
Potresti pensarci come una sorta di chiamata di funzione:
(operator operand1 operand2 ...)
Non c'è niente di speciale in questo. Se sovraccarichi gli operatori in C ++ (e in molti altri linguaggi che lo consentono) devi spesso definire questo tipo di funzione esattamente in questo modo:
MyClass operator+(MyClass const& x, MyClass const& y);
Quando (alla fine) "Tutto è una chiamata di funzione" (o una forma speciale, o una macroespansione, entrambi con la sintassi di superficie di "chiamata di funzione"), è sembrato piuttosto naturale.
Quindi, per (= 1 2)
l'ho letto come "chiama il confronto numerico uguale su 1 e 2".