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ą lambdas 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 lambdauwagi, że lambdas 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
lambdapo 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?