- fix-point combinators - очень полезные инструменты для введения рекурсии.
- Continuation-Passing style - это стиль исчисления лямбда, функции которого никогда не возвращаются. Вместо этого вы передаете остальную часть своей программы в качестве аргумента лямбда в вашу функцию и продолжаете ее. Это позволяет вам лучше контролировать поток выполнения и более легко определять различные конструкции, изменяющие поток (петли, сопрограммы и т. Д.)
Тем не менее, мне интересно, можете ли вы выразить один в другом? Все языки CPS-типа, которые я видел, имеют явную конструкцию FIX
для определения рекурсии.Определить комбинацию фиксированных точек в продолжении Проходной стиль
- Это потому, что невозможно определить комбинатор фиксированной точки (или аналогичный) в простой CPS, без
FIX
? Если да, то знаете ли вы доказательства такого? - Или это из-за типизации проблем?
- Возможно, возможно, но по какой-то причине непрактично?
- Или я просто не нашел решение, которое там ...?
Я бы ожидать Y-комбинатора, как функции CPS CPSY
работать следующим образом: Если я определяю Y-готовую функцию CPS, такие как:
function Yready(this, return) =
return (lambda <args> . <body using 'this' as recursion>);
Я бы затем положить его в CPSY
производить функцию, которая рекурсивно в себя:
function CPSY(F, return) = ?????
CPSY(Yready,
lambda rec . <body where 'rec' names 'lambda <args>' from above, but with the loop closed>
)
CPSY
должна быть простой функцией продолжающей переход стиль без сам, опираясь на любой рекурсии. Y-комбинатор может быть определен таким образом в простом лямбда-исчислении без встроенной рекурсии. Может ли она существовать и в некоторой форме в CPS?
Повторим разъяснений: Я ищу комбинатора, как функции CPSY
, что:
- позволило бы рекурсию функций СУЗ
- Определение этого не опирается на рекурсии
- Определение его дано в стиле продолжения (без возврата лямбда в любом месте тела
CPSY
)
"...IOW, без использования 'letrec' в любой форме, только' let' (в терминах Scheme). «Я считаю, что это то, что вы имеете в виду. Интересный вопрос ... –