Как бы вы использовали комплект! в простой процедуре f такой, что оценка (+ (f 0) (f 1)) вернет 0, если аргументы в + оцениваются слева направо, но вернет 1, если аргументы будут оцениваться справа налево?Как использовать комплект! в функциях Схемы?
5
A
ответ
6
Простой подход, вероятно, для хранения некоторого внешнего состояния и реализации f влияет на его содержимое.
(define x 0)
(define (f n) (let ((tmp x)) (set! x n) tmp))
Таким образом, х первоначально 0 и каждый вызов е возвращает текущее значение х и сохранить аргумент в качестве нового значения х. Таким образом, (f 0), за которым следует (f 1), оба возвращают 0, оставляя окончательное значение х равным 1. При оценке (f 1), за которой следует (f 0), будет 0, а 1, а окончательный x равен 0.
-1
С call/cc.
(define (f)
(call/cc
(lambda (c) (+ (c 0) (c 1)))))
(write (f))
Вызов С в течение любого аргумента +
причин f
возвращаться немедленно, получая 0 или 1 в зависимости от аргумента, который оценивается в первую очередь.
Но я подозреваю, что он всегда будет оценивать слева направо и, таким образом, вернуть 0.
Смежные вопросы
- 1. Как использовать счетчики в функциях
- 2. Как использовать $ (this) в функциях?
- 3. комплект-машина! и пусть на языке схемы
- 4. Как использовать комплект OSGI в верблюжьем маршруте?
- 5. Когда использовать курсор в функциях
- 6. Зачем использовать * let * в функциях?
- 7. Как использовать assert в async-функциях? (Typcript)
- 8. Как использовать функциональную переменную в других функциях
- 9. jQuery задумываясь, как использовать контекст в функциях
- 10. Как использовать PHP в функциях Javascript
- 11. Как использовать согласованные аргументы в функциях elixir
- 12. Как использовать рекурсивные связанные типы в функциях?
- 13. Как использовать $ (this) в jquery-функциях?
- 14. Как использовать глобальные переменные в функциях python?
- 15. C# - Как использовать переменные в других функциях
- 16. Как использовать отдельные ноты в музыкальных функциях?
- 17. Как использовать ByVal в функциях VBScript?
- 18. Как использовать массивы в функциях VBA?
- 19. Как использовать оператор switch в R-функциях?
- 20. Как использовать локальные переменные в функциях Python?
- 21. Как использовать if и elif в функциях
- 22. Как использовать методы класса в jQuery-функциях?
- 23. Как использовать «-----» в функциях строки php?
- 24. Как использовать очередь в разных функциях?
- 25. Как использовать переменные в других функциях
- 26. Как использовать хранимую геометрию в пространственных функциях?
- 27. Как использовать Socket.io в aws лямбда-функциях
- 28. Как использовать условия в функциях WiX?
- 29. Как использовать переменные в нескольких функциях?
- 30. Laravel: как использовать мой композитор, установленный комплект?