Вопросы по теме 'continuation-passing'
вложенный сброс CPS
используя подключаемый модуль компилятора CPS Scala 2.8, есть два волшебных элемента управления reset и shift . Сброс ограничивает продолжение, а сдвиг фиксирует продолжение.
Существует пример использования CPS с NIO с использованием...
330 просмотров
schedule
30.03.2022
Как написать функции анализатора / оценщика, такие как eval-if, в форме CPS?
Я пытаюсь написать игрушечный интерпретатор схемы Python на основе метакругового оценщика в SICP. Поскольку python поддерживает только стек вызовов ограниченной глубины, мне нужно исключить хвостовые вызовы. Я читал про батуты и реализовал с ним...
287 просмотров
schedule
17.01.2023
мой 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 просмотров
schedule
24.02.2022
продолжение в 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 просмотров
schedule
29.06.2023
Является ли 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 просмотров
schedule
12.04.2022
О вложенных типах подвески CPS
Начнем со знакомого типа приостановленных вычислений CPS, (a -> r) -> r , который пишется как Cont r a на языке mtl . Мы знаем, что он изоморфен a , пока он остается полиморфным в r . Если мы вложим этот тип, мы получим этот тип ранга...
128 просмотров
schedule
27.03.2023
Код [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 просмотров
schedule
21.11.2022
Почему мой преобразователь больше не работает при абстрагировании от редукции/композиции?
Я застрял в реализации короткого замыкания и безопасного стека преобразователя:
const loop = f => {
let acc = f();
while (acc && acc.type === tailRec)
acc = f(...acc.args);
return acc;
};
const tailRec =...
38 просмотров
schedule
09.07.2022
Стиль CPS для вызовов функций в стиле связанного списка
Я пытаюсь преобразовать следующий код в стиль передачи продолжения. Первоначально код возвращал String , поэтому я изменил его, чтобы вызвать лямбду продолжения, которая принимает String . Мне интересно, как удалить поле next и вместо этого...
82 просмотров
schedule
21.07.2023
Аргумент функции call/cc написан в CPS?
Параметр call/cc — это процедура, принимающая в качестве аргумента продолжение. Процедура написана в CPS?
277 просмотров
schedule
14.11.2022
Как мы можем преобразовать программу, использующую `call/cc`, в программу, использующую функции, написанные на CPS?
Язык программирования Scheme говорит
Оказывается, любую программу, использующую call/cc, можно переписать на CPS без call/cc, но может потребоваться полная переработка программы (иногда включая даже системные примитивы).
Каковы общие...
79 просмотров
schedule
22.02.2022
Получить поддерево по индексу в ширину, используя стиль передачи продолжения
Этот вопрос является продолжением Как мне получить поддерево по индексу ? . Этот вопрос касается индексации в глубину (для которой я предоставил решение в стиле передачи продолжения в глубину). Этот вопрос здесь касается индексации в ширину и, в...
87 просмотров
schedule
05.06.2023