Sono in procinto di apprendere lo schema. Recentemente ho passato (troppo!) Tempo a cercare un bug in un programma prima di rendermi conto che mancava la parola 'else' in una clausola cond. Ma il comportamento in tali circostanze sembra essere un po 'strano. Sperimentando con le condizioni con un semplice programma (sotto) il 'qualunque' viene visualizzato come previsto nella clausola else, ma viene anche visualizzato, ma senza il 'else', viene visualizzato con le virgolette circostanti e il nuovo non interpretato linea stampata letteralmente. Qualcuno può spiegarmi cosa sta succedendo? TIA.Cosa succede in una clausola 'cond' di Scheme quando il 'else' è omesso?
(define (foo x)
(cond ((eq? x 0) (display "zero\n"))
(display "whatever\n")))
(define (bar x)
(cond ((eq? x 0) (display "zero\n"))
(else (display "whatever\n"))))
In the repl window:
Welcome to DrScheme, version 4.1.5 [3m].
Language: Pretty Big; memory limit: 128 megabytes.
> (foo 0)
zero
> (bar 0)
zero
> (foo 2)
"whatever\n"
> (bar 2)
whatever
>
In realtà, almeno nello Schema R5RS, 'else' non è un sinonimo di true. È solo un identificatore riconosciuto dalla macro. –
che operativamente è ancora sinonimo di vero. –