Стиль прохождения продолжения
-
Основы стиля передачи продолжения
- Стиль передачи продолжения (CPS) — это форма функционального программирования, в которой функции принимают дополнительные аргументы для управления своим продолжением.
- CPS позволяет выразить сложные структуры управления, такие как нелокальные передачи управления.
- Стиль CPS используется для преобразования программ в более компактные и легко анализируемые формы.
-
Примеры и реализация
- В CPS каждая функция принимает продолжение, которое будет использоваться для обработки результата.
- Примеры кода в прямом стиле и соответствующие им CPS-версии демонстрируют различия в синтаксисе и семантике.
- В Haskell функция pyth, вычисляющая гипотенузу по теореме Пифагора, может быть преобразована в CPS, используя тип Cont из библиотеки mtl.
-
Использование и внедрение
- CPS может быть использован для реализации продолжений и управления потоком в функциональных языках без первоклассных продолжений.
- Преобразование в CPS концептуально является внедрением Йонеды и аналогично внедрению лямбда-исчисления в π-исчисление.
-
Применение в других областях
- CPS представляет интерес за пределами компьютерных наук, например, в лингвистике и математике.
- В математике изоморфизм Карри-Говарда связывает CPS с вариацией классической логики.
-
Ссылки и дополнительные ресурсы
- CPC — это язык программирования для параллельных систем, разработанный Юлиушем Хробочеком и Габриэлем Кернайсом.
- Chicken Scheme — это компилятор Scheme для C, использующий CPS для преобразования процедур Scheme в функции C.
Полный текст статьи: