Это потому, что мы хотим сохранить пространство памяти?В схеме, почему вы использовали let вместо let *?
ответ
let*
, за счет более высокой способности, должен сериализовать определяемые термины (поскольку каждый из них может зависеть от предыдущих), тогда как термины в let
могут быть установлены в любом порядке (и даже параллельно, если это позволит архитектура).
Ответ Скотта правильный, но я хочу передать в другой перспективе.
Культура схемы очень важна для функционального программирования. Функциональный код не должен заботиться о порядке операций. Это, в самом деле, почему такое выражение, как (foo (bar) (baz (qux)))
ничего не говорит о каком порядке эти функции будут работать, за исключением того, что:
qux
будет выполняться доbaz
запускается- как
bar
иbaz
будет запускается передfoo
запускается
В частности, qux
может быть запущена до или после того, как bar
, и даже последовательности, как qux
→ bar
→ baz
→ foo
действителен.
По той же причине по умолчанию следует использовать let
; он сигнализирует читателю, что применяются обычные функциональные предположения, что привязки можно оценивать в любом порядке. let*
следует использовать только для того, чтобы предупредить читателя о необычном поведении привязки в зависимости от предыдущих в той же форме let*
.
- 1. Использование вложенных let или let * в схеме
- 2. Применение «let» в схеме?
- 3. Почему «let» используется вместо var?
- 4. let-over-lambda в схеме?
- 5. Как реализовать let * в схеме?
- 6. Смущает разница между let и let * в схеме
- 7. Проблема с синтаксисом «let» в схеме
- 8. Использование переменных let в схеме лямбда в схеме
- 9. Scheme let statement
- 10. Rails - RSpec - Разница между «let» и «let!»
- 11. привязка `let 'недоступна для последующих привязок` let'?
- 12. Rspec: let versus let с восклицательным знаком
- 13. Почему ocaml нужно как «let», так и «let rec»?
- 14. В каких ситуациях требуется разрешение вместо let *?
- 15. Проблемы с дифференциацией Rspec 'let' vs 'let!'
- 16. Схема: Когда использовать let, let *, letrec?
- 17. Swift: когда следует использовать «var» вместо «let»?
- 18. В чем разница между let и let * в Scheme?
- 19. For in дает let вместо var
- 20. О `let 5 = 10`
- 21. Использование Let in Scheme
- 22. В rspec-rails разница между «let» VS «let!»
- 23. haskell quick sort, почему первый let использует <= вместо <?
- 24. Почему я должен использовать let вместо const внутри функций?
- 25. let vs let * в LISP - есть ли разница в эффективности?
- 26. Почему этот пример RSpec требует «let!» вместо «пусть»?
- 27. RSPEC Let Alternate Scoping
- 28. Почему LET не работает с VECTOR?
- 29. Использование let в Haskell
- 30. аналог `let` в ExUnit
Возможный дубликат [Использование в схеме] (http://stackoverflow.com/questions/946050/using-let-in-scheme) – runDOSrun