Я начал программировать на Python, и меня действительно смутили такие понятия, как сопрограммы и замыкания.
Теперь я думаю, что знаю их на каком-то поверхностном уровне, но я никогда не чувствовал этот момент «просветления», поэтому я решил изучать Clojure. Я купил книгу Стюарта Хэллоуэя, и она хороша, но когда я посмотрел на указатель, не было слов, таких как сопрограмма или продолжение. Я гуглил их, но там тоже ничего нет.
Итак, мой вопрос:
Есть ли у Clojure продолжения или сопрограммы для выполнения задач типа пинг-понга без переполнения стека?
Пример Python (хотя стандартный Python не поддерживает полнофункциональную версию этой симметричной сопрограммы):
def ping():
while 1:
print "ping"
function to switching to pong
def pong():
while 1:
function to switching to ping
print "pong"
источник