Io Twitter lo lovvo, assay ❤️ e quando trovo roba che m’ispira poi ne scrivo qui sul blog. Come il recente post Ricorsività e specialità.
Devo vedere Sweet concludevo e allora ecco cosa ho trovato.
La home di Sweet su SourceForge lo presenta come Readable Lisp/S-expressions with infix, functions, and indentation, brought to you by dwheeler.
Uh! chi è l’autore? Eccolo: David A. Wheeler, trovato via Twitter dove posta poco ma rockz! 💥
Le caratteristiche del progetto sono:
- Infix notation, e.g.,
{3 + 4}
in addition to(+ 3 4)
- Optional traditional function notation, e.g.,
f(...)
in addition to(f ...)
- Optional indentation support greatly reduces the need for parentheses
- Works on any data or program (it is general and homoiconic)
Poi c’è la pagina della Wiki, dice tutto (ahemmm…) e riporta un esempio molto simile a quello di Michael da cui sono partito nel post precedente.
La versione ortodossa della funzione fattoriale:
(define (factorial n)
(if (<= n 1)
1
(* n (factorial (- n 1)))))
e quella Sweet:
define factorial(n)
if {n <= 1}
1
{n * factorial{n - 1}}
Tolte tutte le parentesi tonde tranne quelle per il passaggio degli argomenti. Uso delle graffe per la notazione infissa.
È più leggibile? forse, dipende dall’abitudine.
Personalmente penso a come costruisco una funzione Lisp (in realtà per me Racket) dal di dentro, le parentesi le apro sempre in copia, così ()
e sulla carta. Poi nell’ambiente DrRacket, ma anche tanti altri editors, viene indicata la corrispondente aperta/chiusa.
Anche sulla notazione infissa rispetto alla prefissa sono indeciso:
ecco, non è la notazione cui siamo abituati, quella che ci insegnano nella scuola; invece:
😉 Che poi è questione di convenzione, esempio:
e
e anche
Ammetto che dc
oggi è solo una provocazione. O no? le calcolatrici HP, la mitica 11c.
Concordo con Jesse Alama, qui (non ho trovato il cinguettio cui si riferisce), e qui, con un opportuno adattamento: sed 's/God/FSM/'
.
⭕