D: Quando, se mai, è utile virgolette a lambda
e quando, se mai, non dobbiamo virgolette a lambda
?
Le persone usano lambda
s in tre modi:
- plain:
(lambda (x) x)
- citato:
'(lambda (x) x)
- sharp-citato:
#'(lambda (x) x)
Questo thread SO discute i tre tipi, questo thread SO spiega perché non citare (NB: non virgolette ) lambda
e questo thread SO discute anche le distinzioni tra virgolette e virgolette .
Ora, il nodo manuale su funzioni anonime e il docstring per lambda
notare che lambda
sono auto-quotanti:
Una chiamata del modulo
(lambda ARGS DOCSTRING INTERACTIVE BODY)
è auto-quotata; il risultato della valutazione dell'espressione lambda è l'espressione stessa. L'espressione lambda può quindi essere trattata come una funzione ...
Quindi, sembra che (lambda (x) x)
e #'(lambda (x) x)
siano equivalenti, ma '(lambda (x) x)
non lo è (soprattutto, durante la compilazione di byte).
Sembra che uno vorrebbe raramente citare un lambda
, ma non mi è chiaro quando, se mai, dovremmo, o non dovremmo, virgolette:
- La citazione nitida è
lambda
semplicemente una scelta stilistica o ci sono circostanze in cui la quotazione forte è effettivamente utile? - Ci sono circostanze in cui non dobbiamo fare virgolette acide a
lambda
, ovvero, quando ciò cambierebbe il significato del codice?