Jak użyłbyś zestawu? w prostej procedurze f takiej, że ewaluacja (+ (f 0) (f 1)) zwróci 0, jeśli argumenty do + zostaną ocenione od lewej do prawej, ale zwrócą 1, jeśli argumenty są oceniane od prawej do lewej?Jak korzystać z zestawu! w funkcjach Scheme?
5
A
Odpowiedz
6
Najprostszym podejściem jest prawdopodobnie zachowanie jakiegoś zewnętrznego stanu i wdrożenie f wpływa na jego zawartość.
(define x 0)
(define (f n) (let ((tmp x)) (set! x n) tmp))
Zatem x początkowo 0 i każde wywołanie f powróci bieżącą wartość x i zapisać argument jako nowej wartości x. Tak więc (f 0), po którym następuje (f 1), obie zwrócą 0, pozostawiając końcową wartość x równą 1. Podczas oceniania (f 1), a następnie (f 0), da się 0, a następnie 1, z końcową wartością x wynoszącą 0.
-1
Z call/cc.
(define (f)
(call/cc
(lambda (c) (+ (c 0) (c 1)))))
(write (f))
Wywoływanie C w ciągu jednej argumentu +
f
powoduje natychmiastowy powrót otrzymując 0 lub 1 zależnie od tego jaki jest oceniany pierwszym argumentem.
Ale podejrzewam, że zawsze oceni to od lewej do prawej, a tym samym zwróci 0.
Powiązane problemy
- 1. Jak korzystać z warunków w funkcjach WiX?
- 2. W Scheme, jaki jest sens "zestawu!"?
- 3. Jak korzystać z zarządzania pakietami w funkcjach NodeJS Azure?
- 4. Implementacja zestawu Mandelbrota w Scheme jest bardzo powolna.
- 5. Jak korzystać z zestawu UI (PSD) w aplikacji Android
- 6. Używanie PDO w funkcjach w funkcjach
- 7. Jak zrobić wykładniki w Scheme?
- 8. Dlaczego warto korzystać z funkcji rozwijania opartego na funkcjach?
- 9. Jak najlepiej korzystać z wersji pliku i wersji zestawu?
- 10. opcjonalne argumenty w funkcjach fortra
- 11. Jak uzyskać typ wartości w Scheme?
- 12. Jak możesz przepisać "rozpocznij" w Scheme?
- 13. Racket vs Scheme macros
- 14. Używanie Let in Scheme
- 15. Jak przekazywać obiekty w zagnieżdżonych funkcjach?
- 16. Jak ustawić $? w funkcjach wywoływanych przez PS1?
- 17. PLT-Scheme learning reference
- 18. Web scraping ze Scheme
- 19. Apple Music URL Scheme
- 20. Opcjonalne argumenty w funkcjach MATLAB
- 21. Jak korzystać z CefSharp w usłudze WCF?
- 22. Jak korzystać z protokołu OCLint w środowisku Cocoa Framework?
- 23. Zrozumienie rekursji Haskella w funkcjach
- 24. W funkcjach App-Buy-Unlock
- 25. Włączanie CORS w funkcjach chmurowych dla Firebase
- 26. Y Combinator w Scheme za pomocą Definiowanie
- 27. Interpreter Lisp/Scheme bez Emacsa?
- 28. Dopuszczalne typy w funkcjach Numeric.AD
- 29. budynku Lisp/Scheme-jak drzewo parse z Flex/bizon
- 30. Zmienne php w anonimowych funkcjach