Avvolgendo la mia mente attorno alla notazione del prefisso?

9

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.

    
posta Rice Flour Cookies 04.08.2011 - 14:39
fonte

5 risposte

5

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".

    
risposta data 04.08.2011 - 14:47
fonte
6

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.

    
risposta data 04.08.2011 - 14:50
fonte
4

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.

    
risposta data 18.08.2011 - 20:04
fonte
4

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);
    
risposta data 04.08.2011 - 14:49
fonte
2

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".

    
risposta data 29.08.2011 - 11:55
fonte

Leggi altre domande sui tag