CPS может полностью избавиться от call / cc, так что вы определенно можете реализовать это в C #, вручную выполняя CPS. Ничего не зная об автоматическом CPS-входе в C #, я не могу сказать, будет ли эта функция делать это автоматически. Однако «асинхронность» в названии заставляет меня задуматься. Вопрос, который вы задаете, явно связан с синхронной оценкой этого выражения.
Мое мнение: я думаю, что перевод этого на C # не самый быстрый способ понять это.
Наконец, let * - это сокращение для вложенных привязок. Таким образом, вы можете переписать это как:
(let ([yin ...])
(let ([yang ...])
...))
... чтобы избавиться от лет *. В вашем случае, поскольку «ян» не зависит от «инь», эффект заключается в последовательности. Таким образом, продолжение, зафиксированное в правой части привязки 'yin', является тем, которое еще не оценило привязку 'yang'.