Описание тега delimited-continuations

A delimited continuation is a "slice" of a continuation frame that has been reified into a function
0 ответов

Как реализовать сопрограмму, основанную на продолжениях с несколькими выстрелами?

Недавно я реализовал продолжения с разделителями в CPS с reset / shift: // reset :: ((a -> a) -> a) -> (a -> r) -> r reset = k => f => f(k(id)); // shift :: ((a -> r) -> (r -> r) -> r) -> (a -> r) -> r shift…
1 ответ

Используйте MonadRef для реализации MonadCont

Существует хорошо известная проблема, которую мы не можем использовать forall вводит в Cont тип возврата. Однако должно быть хорошо иметь следующее определение: class Monad m => MonadCont' m where callCC' :: ((a -> forall b. m b) -> m a) -&…
0 ответов

Волокна / сопрограммы против продолжения с разделителями

Поэтому я прочитал статью о параллельных запросах на кражу работы здесь: http://open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3872.pdf. Они упоминают "воровство детей против кражи продолжения" и говорят, что краже потомков может потребоваться неогра…
1 ответ

Что именно означает "приглашение к продолжению"?

Я пытаюсь расшифровать документацию call-with-continuation-prompt относится proc к данному args с текущим продолжением, расширенным приглашением. Приглашение помечено prompt-tag, который должен быть результатом либо default-continuation-prompt-tag (…
0 ответов

Сумма двоичного дерева с продолжениями с разделителями Scala

Я играю со Scala и начинаю с нескольких простых примеров, таких как реализация бинарных деревьев. Имея предварительные знания о функциональном программировании (OCaml, F#), я пытался повторить общий подход использования продолжений, чтобы сделать об…
2 ответа

Сдвиг монады

Пытаясь построить интуицию для монадного трансформатора ContT, я (возможно, неудивительно) смутился. Проблема заключается в операции shiftT, которая, кажется, не делает ничего полезного. Сначала упрощенный пример того, как его можно использовать shi…
0 ответов

Понимание сдвига / сброса в ракетке

Я представляю две наивные реализации foldr в рэкет Этот первый испытывает недостаток в надлежащем вызове хвоста и проблематичен для больших значений xs (define (foldr1 f y xs) (if (empty? xs) y (f (car xs) (foldr1 f y (cdr xs))))) (foldr1 list 0 '(1…
1 ответ

Вложенные разграничения продолжения преобразований

Я пытаюсь понять продолжения с разделителями, и я читал эту статью: http://community.schemewiki.org/?composable-continuations-tutorial И я нашел это преобразование сброса / сдвига (reset (...A... (shift V E) ...B...)) ; --> (let ((V (lambda (x) (…
1 ответ

Как отказаться от продолжения с разделителями из нескольких вложенных функций?

Я изучаю продолжения с разделителями и в настоящее время играю с их отбрасыванием, чтобы получить эффект, аналогичный повышению исключений. Вот что доставляет мне неприятности: const structure = type => cons => { const f = (f, args) => ({["…
1 ответ

Практическое продолжение с разделителями в C / x64 ASM

Я посмотрел статью под названием "Учебник по планированию параллелизма с форк-объединением и кражей работ". Я хочу реализовать кражу продолжения, где остальная часть кода после вызова spawn имеет право быть украденным. Вот код из бумаги. 1 e(); 2 sp…
3 ответа

Какие параметры типа я должен использовать, чтобы List.map работал с продолжениями с разделителями?

Я в основном следую примеру, приведенному на странице API Scala, для продолжения с разделителями. Код ниже работает нормально: import scala.util.continuations._ import scala.collection.mutable.HashMap val sessions = new HashMap[Int, Int=>Unit] de…
23 мар '13 в 23:29
1 ответ

Как выразить продолжения с разделителями только для чистых функций?

Я работал над учебником Олега по продолжениям с разделителями: newtype Cont r a = Cont{runCont :: (a -> r) -> r} instance Monad (Cont r) where return x = Cont (\k -> k x) Cont m >>= f = Cont (\k -> m (\v -> runCont (f v) k)) run…
6 ответов

Что такое продолжения Scala и зачем их использовать?

Я только что закончил Программирование в Scala , и я изучал изменения между Scala 2.7 и 2.8. Наиболее важным является плагин продолжения, но я не понимаю, для чего он полезен или как он работает. Я видел, что это хорошо для асинхронного ввода-вывода…
1 ответ

Как перевести shift/reset в delimcc?

Я изучаю разделы продолжения Олега и Асаи "для чайников" (http://pllab.is.ocha.ac.jp/~asai/cw2011tutorial/main-e.pdf), но вместо этого в этом документе используется формализм смещения / сброса из оперативного материала, доступного в delimcc Олега. И…
0 ответов

Есть ли интересные монады одиночного выстрела, кроме "Может быть" и "Любого"?

В языке программирования Монте, как и в его предшественнике E, существует синтаксис для продолжений, разделенных одиночным выстрелом, которые называются "выталкиватели" и являются продолжениями, которые эффективно используются только один раз в пред…
03 июн '17 в 23:28
2 ответа

Можно ли использовать продолжение в Котлине? Есть ли примеры?

В Котлине есть пакет для продолжения, но он помечен как экспериментальный. Там нет документации, кроме API, и нет учебника или примеров, где я мог бы найти. Кто-нибудь знает, можно ли его уже использовать? Что было бы примером его использования?
1 ответ

Непоследовательное поведение в платформе Scala CPS

Я пытаюсь создать сопрограммную платформу для пакетной выборки данных, проходя через каждую зависимую от данных функцию параллельно. Вот что у меня так далеко: http://pastie.org/7147798 Это не работает def get(id: Long) = reset { // Is it not alread…
1 ответ

Использование продолжений Scala с циклами while

Я понимаю, что это противоречит обычному пониманию вопросов SO, но следующий код работает, хотя я думаю, что он не должен работать. Ниже приведена небольшая программа Scala, которая использует продолжения с циклом while. Согласно моему пониманию сти…
2 ответа

Ошибка продолжения Scala с разделителями во время выполнения

Новичок в Scala, я только что скачал Eclipse 3.6.2 и Scala IDE 2.0.0-beta4 (с Scala 2.9.0.final). Я создаю новый проект Scala, чтобы попробовать продолжение с разделителями: package delimCCTests import scala.util.continuations._ object Test extends …
2 ответа

Что возвращает продолжение в схеме?

Я наткнулся на то, чего не могу понять. #lang scheme (define cc #f) (define (val!) (call/cc (lambda (k) (set! cc k) 0))) (* 10 (val!)) (cc 100) Все идет нормально; продолжение (* 10 []) хранится в cc и если мы позвоним (cc 100) мы видим 1000 в REPL,…