Вопросы по теме 'continuation-passing'

вложенный сброс CPS
используя подключаемый модуль компилятора CPS Scala 2.8, есть два волшебных элемента управления reset и shift . Сброс ограничивает продолжение, а сдвиг фиксирует продолжение. Существует пример использования CPS с NIO с использованием...
330 просмотров

Как написать функции анализатора / оценщика, такие как eval-if, в форме CPS?
Я пытаюсь написать игрушечный интерпретатор схемы Python на основе метакругового оценщика в SICP. Поскольку python поддерживает только стек вызовов ограниченной глубины, мне нужно исключить хвостовые вызовы. Я читал про батуты и реализовал с ним...
287 просмотров

мой CPS прав?
в "The Scheme Programming Language 4th Edition" есть пример, как показано ниже: (define product (lambda (ls) (call/cc (lambda (break) (let f ([ls ls]) (cond [(null? ls) 1] [(= (car ls) 0) (break...
245 просмотров

продолжение в common lisp макросами относительно реализации в OnLisp
В On Lisp , стр. 267, Пол Грэм предлагает реализацию макросов передачи продолжения: (setq *cont* #'identity) (defmacro =lambda (parms &body body) `#'(lambda (*cont* ,@parms) ,@body)) (defmacro =defun (name parms &body body) (let...
970 просмотров

Является ли call/cc копией фрейма стека или фактическим скачком выполнения?
Я не понимаю, как следующее не создает бесконечный цикл: (define call/cc call-with-current-continuation) ; ccc alias (define return #f) ; declare a global variable 'return' (+ 1 (call/cc (lambda (cont) ; setup continuation with 'cont' as the exit...
160 просмотров

О вложенных типах подвески CPS
Начнем со знакомого типа приостановленных вычислений CPS, (a -> r) -> r , который пишется как Cont r a на языке mtl . Мы знаем, что он изоморфен a , пока он остается полиморфным в r . Если мы вложим этот тип, мы получим этот тип ранга...
128 просмотров

Код [a,b].reduce(f,x) в [a,b].reduce(f) с использованием функциональных ссылок преобразователя/CPS?
В моем предыдущем вопросе: Извлечение данных из цепочки функций без массивов @Aadit M Shah дал мне удивительное решение следующим образом: https://stackoverflow.com/a/51420884/6440264 По такому выражению, как A(a)(b)(f) , где f  –...
116 просмотров

Почему мой преобразователь больше не работает при абстрагировании от редукции/композиции?
Я застрял в реализации короткого замыкания и безопасного стека преобразователя: const loop = f => { let acc = f(); while (acc && acc.type === tailRec) acc = f(...acc.args); return acc; }; const tailRec =...
38 просмотров

Стиль CPS для вызовов функций в стиле связанного списка
Я пытаюсь преобразовать следующий код в стиль передачи продолжения. Первоначально код возвращал String , поэтому я изменил его, чтобы вызвать лямбду продолжения, которая принимает String . Мне интересно, как удалить поле next и вместо этого...
82 просмотров

Аргумент функции call/cc написан в CPS?
Параметр call/cc — это процедура, принимающая в качестве аргумента продолжение. Процедура написана в CPS?
277 просмотров

Как мы можем преобразовать программу, использующую `call/cc`, в программу, использующую функции, написанные на CPS?
Язык программирования Scheme говорит Оказывается, любую программу, использующую call/cc, можно переписать на CPS без call/cc, но может потребоваться полная переработка программы (иногда включая даже системные примитивы). Каковы общие...
79 просмотров

Получить поддерево по индексу в ширину, используя стиль передачи продолжения
Этот вопрос является продолжением Как мне получить поддерево по индексу ? . Этот вопрос касается индексации в глубину (для которой я предоставил решение в стиле передачи продолжения в глубину). Этот вопрос здесь касается индексации в ширину и, в...
87 просмотров
schedule 05.06.2023