Zacząłem programować w Pythonie i byłem bardzo zdezorientowany takimi pojęciami, jak coroutines i closures.
Teraz myślę, że znam ich na jakimś powierzchownym poziomie, ale nigdy nie czułem tego momentu „oświecenia”, więc wybrałem naukę Clojure. Kupiłem książkę Stuarta Hallowaya i jest dobra, ale kiedy spojrzałam na indeks, nie było słów takich jak „coroutine” czy „kontynuacja”. Przeszukałem ich, ale tam też nic nie ma.
Moje pytanie brzmi:
Czy Clojure ma kontynuacje lub coroutines do wykonywania zadań takich jak ping-pong bez przepełnienia stosu?
Przykład Python (chociaż standardowy Python nie obsługuje w pełni funkcjonalnej wersji tej symetrycznej coroutine):
def ping():
while 1:
print "ping"
function to switching to pong
def pong():
while 1:
function to switching to ping
print "pong"
źródło