Как мне получить BlockClosure в Squeak (я хочу использовать BlockClosure >> callCC)?
Когда я пишу [#foo], что это BlockContext, в чем дело?
Обновление: я понял, что BlockClosure - это в основном новый компилятор.
Вместо этого, как мне работать с приморскими продолжениями? У меня проблемы, и я буду благодарен за любые примеры.
Дальнейшее обновление: цель этого не в использовании Seaside (по крайней мере, не напрямую), а в написании обходов и других подобных вещей таким образом, чтобы это было проще, чем катить мои собственные итераторы отслеживания состояния.





Обычно с Seaside вам вообще никогда не придется иметь дело с Continuations самостоятельно.
Вы просто используете #call: и #answer: из своих компонентов.
Если вы пытаетесь сделать что-то еще с Continuation, кроме написания приложения Seaside, взгляните на WAComponent>>call: в качестве примера использования.
Или попробуйте это. Откройте окно стенограммы. Теперь в рабочей области выберите сразу весь этот код и выполните:
continuation := nil.
result := Continuation currentDo: [:cc |
"store the continuation, cc, somewhere for later use"
continuation := cc.
1 ].
Transcript show: result.
Вы должны увидеть 1, отображаемый в окне Transcript. Теперь в рабочей области выполните:
continuation value: 2
а потом:
continuation value: 3
Вы должны увидеть каждое значение, которое вы передаете continuation, отображаемое в Транскрипте, потому что каждое значение, которое вы передаете в #value:, вызывает восстановление контекста продолжения и новое значение, присвоенное result.
Надеюсь, это поможет ...