Рассмотрим простой пример функции факториала, написанный в псевдо типа КПС-стиля (перечисление & упорядочение промежуточных результатов опущена, как будет очень шумно):Вызов продолжение против вызова функции
(def (fact n k) (if (eq? n 0) (k 1) (fact (- n 1) (\result (k (* n result))))))
Выполняет ли вызов продолжения (k 1) (т.е. «возвращает» значение) как-то технически отличается от «нормального» вызова функции, как в else-branch? Единственное, что приходит мне на ум, состоит в том, что в этом случае продолжение - это единственное, что не имеет другого продолжения в его аргументе :)
Также вы можете сказать, что это вычисление напоминает поведение дерева DFS динамически построенное дерево, с текущим вычислением, являющимся рассматриваемым в настоящее время узлом, и «другими неисследованными ветвями» является стек вызовов/продолжение?
Пункт продолжения состоит в том, что они не возвращаются. Они 'Goto', а не' Call'. – Bergi
Нет никакой разницы, это просто регулярная функция. – molbdnilo