D: Quando, se mai, è utile virgolette a lambdae quando, se mai, non dobbiamo virgolette a lambda?
Le persone usano lambdas 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 ) lambdae questo thread SO discute anche le distinzioni tra virgolette e virgolette .
Ora, il nodo manuale su funzioni anonime e il docstring per lambdanotare che lambdasono 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 è
lambdasemplicemente 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?