Есть такой примерчик, тупо выводит последовательность по три числа: http://brainslugs.blogspot.com/2006/10/callcc.html. Писано на ruby. Можно это реализовать на haskell-е?
После чтения http://en.wikibooks.org/wiki/Haskell/Continuation_passing_style сложилось впечатление что callCC - это какая-то кривая замена простой лямбде и никакими контекстами там и не пахнет. Плохо читал?
В конечно счёте хочется получить последовательность берущуюся из БД по курсору. В принципе, наверное можно не замарачиваться на call/cc, ибо haskell ленивый, в endless loop не уйдёт, но интересно всё таки, да и прозрачно с сохранием контекста в котором бесконечная красота получается, ящитаю.
Пока что не получается сделать даже такое:
nums :: Cont r [Int]
nums = do
ns <- callCC $ \k -> do
k [1..]
return $ take 5 ns
> runCont nums print
[1,2,3,4,5]