Описание тега continuations
В информатике и программировании продолжение - это абстрактное представление состояния управления. Продолжение воплощает экземпляр вычислительного процесса в заданный момент его выполнения. Он содержит такую информацию, как текущий стек процесса (включая все данные, время жизни которых находится внутри процесса, например, "локальные переменные"), а также точку процесса в вычислении.
3
ответа
Продолжение монады и асинхронных ответов
Предположим, что у нас есть три синхронные функции, которые получают данные через HTTP (это могут быть внутренние вызовы API): lookupUser :: String -> IO UserId lookupUserCity :: UserId -> IO City lookupLocation :: City -> IO Location Итак,…
19 июн '14 в 12:56
3
ответа
Схема продолжения - нужно пояснение
Следующий пример включает в себя переход в продолжение и выход. Может кто-нибудь объяснить поток функции. Я двигаюсь по кругу вокруг продолжения и не знаю точек входа и выхода функции. (define (prod-iterator lst) (letrec ((return-result empty) (resu…
13 дек '11 в 22:51
1
ответ
Использовать Spring Web Flow без состояния на сервере
Я читаю главу Spring Web Flow в книге Pro Spring MVC. К сожалению, нет явной информации, где состояние во время выполнения потока сохраняется. Я предполагаю, что он сохраняется в куче JVM и связан с сеансом. Теперь HTTP является протоколом без сохра…
22 окт '13 в 06:31
1
ответ
Практическая схема программирования
Прошло несколько месяцев с тех пор, как я коснулся Scheme и решил внедрить разделитель дохода командной строки с помощью Scheme. Моя первоначальная реализация использовала простую рекурсию над продолжением, но я подумал, что продолжение будет более …
17 апр '10 в 17:04
5
ответов
Являются ли продолжения монады?
Можно ли назвать продолжения монадой? Это подмножество монад или просто способ реализации монад? Редактировать: Или, может быть, я неправильно понял, и монады - более абстрактное понятие, чем продолжения? (Так что я действительно сравниваю яблоки с …
20 мар '09 в 13:24
4
ответа
Понимание примеров callCC на Haskell
У меня проблемы с пониманием ответов на предыдущий вопрос. Я надеюсь, что объяснение следующего прояснит ситуацию. Следующий пример взят из fpcomplete import Control.Monad.Trans.Class import Control.Monad.Trans.Cont main = flip runContT return $ do …
12 дек '13 в 06:42
1
ответ
Call/cc симулирует goto таким образом?
В книге Lisp in Small Pieces приведен следующий пример кода, который предназначен для демонстрации того, что call/cc мог симулировать goto. (define (fact n) (let ((r 1) (k 'void)) (call/cc (lambda (c) (set! k c) 'void)) (set! r (* r n)) (set! n (- n…
12 фев '15 в 22:04
1
ответ
Как применить callcc, чтобы обеспечить механизм продолжения escape для использования с монадой продолжения
Я пытаюсь реализовать монаду продолжения в Javascript для обработки стиля передачи продолжения и асинхронных потоков управления. Вот моя монада продолжения обучения: // auxiliary functions const log = prefix => x => console.log(prefix, x); con…
30 сен '16 в 11:51
1
ответ
Выполнение ContinueWith, когда другие продолжения не выполнены
Учитывая что-то вроде этого: .ContinueWith((_, o) => this.Foo(), null, TaskContinuationOptions.OnlyOnRanToCompletion) .ContinueWith((_, o) => this.Bar(), null, TaskContinuationOptions.OnlyOnFaulted) .ContinueWith((_, o) => this.AnythingElse…
05 окт '15 в 10:11
2
ответа
Действительно ли трюк с продолжением + хвостовой рекурсией обменивает пространство стека на пространство кучи?
В функциональном программировании есть этот трюк CPS, чтобы взять нерекурсивную функцию и переписать ее в стиле передачи продолжения (CPS), таким образом, тривиально делая ее рекурсивной. Многие вопросы на самом деле охватывают это, как https://lorg…
01 фев '16 в 12:36
1
ответ
call/cc в Python - возможно?
Скажем, у нас есть следующий код в схеме (define cc #f) (define bar 0) (define (func) (print "This should show only once") (call/cc (lambda (k) (set! cc k))) (print bar) (set! bar (+ bar 1))) (define (g) (func) (print "This should show multiple time…
30 янв '18 в 16:56
1
ответ
Как передать данные в call/cc?
Я пытаюсь реализовать функцию, которая принимает список атомов и возвращает только часть этого списка. Подчасть - это все после определенного токена. Я пытаюсь использовать call-with-current-continuation для этой цели. Вот мой подход: (define rest (…
24 фев '16 в 17:22
2
ответа
Вывод типа результата в продолжениях
Можно ли удалить некоторые типы из следующего кода: import util.continuations._ object TrackingTest extends App { implicit def trackable(x: Int) = new { def tracked[R] = shift { cf: (Int => (R, Set[Int])) => cf(x) match { case (r, ints) => …
28 май '12 в 07:44
2
ответа
Есть ли способ зафиксировать продолжения в нотации do?
Поскольку следующий блок do: do x <- foo y <- bar return x + y desugared к следующей форме: foo >>= (\x -> bar >>= (\y -> return x + y)) не \x -> ... а также y -> ... собственно продолжения здесь? Мне было интересно, ес…
05 июл '12 в 20:49
1
ответ
Продолжение задачи не запланировано в потоке пула потоков
Я читал о SynchronizationContext и его использовании с методами async/await ( ссылка). Насколько я понимаю, в консольном приложении, где SynchronizationContext имеет значение null, продолжение ожидаемого метода (Task) будет запланировано с планировщ…
15 ноя '14 в 02:37
7
ответов
Минусы первого класса продолжений
Какова некоторая критика, направленная против разоблачения продолжений как объектов первого класса? Я чувствую, что хорошо иметь продолжение первого класса. Это позволяет полностью контролировать поток выполнения инструкций. Опытные программисты мог…
22 сен '09 в 06:05
1
ответ
Scala Continuations - Почему мой сдвинутый вызов не может быть внутри блока try-catch?
Я новичок в продолжениях Scala и относительно новичок в языке Scala в целом. Я попытался поиграть с продолжениями Scala и написал следующий код: case class MyException(msg:String) extends Exception def go:Int = reset { println("enter your input") va…
30 сен '12 в 14:47
3
ответа
В чем разница между продолжением и обратным вызовом?
Я просматривал всю сеть в поисках просвещения о продолжениях, и это ошеломляет, как простейшие объяснения могут так сильно запутать программиста JavaScript, как я. Это особенно верно, когда большинство статей объясняют продолжения с помощью кода в S…
24 дек '12 в 09:12
0
ответов
Что делает действие этой программы lwp разным между прямой загрузкой в строке комментария и использованием процедуры загрузки?
Я использую guile 2.0.13 как мой интерпретатор схемы, и я написал файл 3.3.3.scm следующим образом: (define lwp-list '()) (define quit-k #f) (define lwp (lambda (thunk) (set! lwp-list (append lwp-list (list thunk))))) (define start (lambda () (if (n…
06 дек '16 в 10:47
1
ответ
Nemerle актеры / сопрограммы и моно продолжения
Я нашел эту статью: http://www.mono-project.com/Continuations Так что у меня есть несколько вопросов по этому поводу. Существуют ли реализации Nemerle в стиле эрланга или (по крайней мере) актеров в стиле скала для этой платформы? Если нет, может кт…
10 сен '11 в 12:54