I don't think CGC versus 3m is relevant. My guess is that you need to wrap a prompt around each evaluation of a top-level form. You can try this manually at first: Does it work to change each `(generate-digit)` at the end below to
(call-with-continuation-prompt (lambda () (generate-digit))) ? If so, then building that `call-with-continuation-prompt` wrapper into your evaluation function will likely solve the problem. At Wed, 03 Dec 2014 23:45:28 +0300, Nesterov Kirill wrote: > Hi all, > > I'm trying to embed racket 3m version as interpreter into GUI application. > For > custom interpreters this application have two required APIs - first one is > init > and the second one is eval string. So in init I'm calling > scheme_register_tls_space and scheme_main_setup after. And in eval I'm using > custom version of Racket's read-eval-print-loop without recursion for > evaluation of thrings. And everything is working well until I've tried to > implement generator. Some reading of sources lead we into problem of > continuation. This simple code leads to error "continuation application: > attempt to cross a continuation barrier". > > (define (generate-one-element-at-a-time lst) > > (define (control-state return) > (for-each > (lambda (element) > (set! return (call-with-current-continuation > (lambda (resume-here) > ;; Grab the current continuation > (set! control-state resume-here) > (return element))))) > lst) > (return 'you-fell-off-the-end)) > > (define (generator) > (call-with-current-continuation control-state)) > > ;; Return the generator > generator) > > (define generate-digit > (generate-one-element-at-a-time '(0 1 2))) > > (generate-digit) ;; 0 > (generate-digit) ;; 1 ;; error "continuation application: attempt to cross a > continuation barrier" > > Attemt to use generators library lead to memory access violation. I suppose > the > problem lies in stack frames which are cleared every time eval callback from > the main program is called. For some reasons I can't run racket in another > thread. So may be there is an option how this problem could be solved? May be > my assumption is not right? May be switch to CGC and mapping stack with > scheme_set_stack_base into heap can help? If it help I can show the source of > this plugin. > > Thanks, > Kirill > ____________________ > Racket Users list: > http://lists.racket-lang.org/users ____________________ Racket Users list: http://lists.racket-lang.org/users

