P: Kiedy, jeśli w ogóle, użyteczne jest precyzyjne zacytowanie a lambda
, a kiedy, jeśli w ogóle, nie powinniśmy ostro zacytować a lambda
?
Ludzie używają lambda
s na trzy sposoby:
- Równina:
(lambda (x) x)
- zacytowany:
'(lambda (x) x)
- ostre cytaty:
#'(lambda (x) x)
Ten wątek SO omawia trzy typy, ten wątek SO wyjaśnia, dlaczego nie cytować (NB: nie ostre-cytowanie ) lambda
, a ten wątek SO omawia także różnice między cytowaniem a ostrym cytowaniem.
Teraz ręczny węzeł funkcji anonimowych i dokumentacja dla lambda
uwagi, że lambda
s są cytatami:
Wywołanie formularza
(lambda ARGS DOCSTRING INTERACTIVE BODY)
jest cytatem własnym; wynikiem oceny wyrażenia lambda jest samo wyrażenie. Wyrażenie lambda można następnie traktować jako funkcję ...
Tak więc wydaje się, że (lambda (x) x)
i #'(lambda (x) x)
są równoważne, ale '(lambda (x) x)
nie jest (co najważniejsze, gdy bajt kompilacji).
Wygląda na to, że rzadko chcą zacytowaćlambda
, ale to jest dla mnie jasne, kiedy, jeśli w ogóle, to powinien, czy nie powinien, ostrych cytat:
- Czy ostre cytowanie jest
lambda
po prostu stylistycznym wyborem, czy też są okoliczności, w których ostre cytowanie jest rzeczywiście przydatne? - Istnieją okoliczności, w których musimy nie ostrych zacytować
lambda
, to znaczy, gdy spowodowałoby to zmianę znaczenia kodu?