This is the same problem as https://github.com/racket/racket/issues/3355. It's already been fixed in Racket 7.9.
On Fri, Nov 6, 2020 at 5:30 AM Shriram Krishnamurthi <shri...@gmail.com> wrote: > Has something changed in how `error` works across modules? This code that > I used last year without trouble seems to run into trouble now. > > Here's the code all in one module: > > #lang racket > > (provide yield resume) > > (define resumer #f) > > (define (yield) > (let/cc k > (set! resumer k) > (error 'yield "yielding computation"))) > > (define (resume) > (resumer 'dummy)) > > (define (fact n) > (if (= n 0) > 1 > (begin > (when (= (remainder n 10) 0) > (yield)) > (* n (fact (- n 1)))))) > > It results in the following (desired) interaction: > > > (fact 10) > . . yield: yielding computation > > (resume) > 3628800 > > But now I'm going to remove the definition of `fact` and put it in another > module, saving the remainder as `yielder.rkt`: > > #lang racket > > (require "yielder.rkt") > > (define (fact n) > (if (= n 0) > 1 > (begin > (when (= (remainder n 10) 0) > (yield)) > (* n (fact (- n 1)))))) > > Now I get the following error. What should I be doing instead? > > > (fact 10) > -- #(struct:exn:fail:contract "vector-ref: contract violation\n > expected: vector?\n given: '((error 'yield \"yielding computation\") > #<path:/Users/sk/Desktop/yielder.rkt> 10 4 113 37)\n argument position: > 1st\n other arguments...:\n 0" #<continuation-mark-set>) > (errortrace-stack-item->srcloc . #(struct:srcloc > #<path:/Applications/Racket > v7.8/share/pkgs/drracket/drracket/private/stack-checkpoint.rkt> 168 0 6297 > 203)) > (pick-first-defs . #(struct:srcloc #<path:/Applications/Racket > v7.8/share/pkgs/drracket/drracket/private/stack-checkpoint.rkt> 331 0 13000 > 425)) > (get-exn-source-locs . #(struct:srcloc #<path:/Applications/Racket > v7.8/share/pkgs/drracket/drracket/private/stack-checkpoint.rkt> 585 0 23184 > 391)) > (#f . #(struct:srcloc #<path:/Applications/Racket > v7.8/collects/racket/contract/private/arrow-val-first.rkt> 486 18 20735 32)) > (error-display-handler/stacktrace . #(struct:srcloc > #<path:/Applications/Racket > v7.8/share/pkgs/drracket/drracket/private/debug.rkt> 362 2 15076 2612)) > (call-with-exception-handler . #(struct:srcloc > #<path:/Applications/Racket v7.8/collects/racket/private/more-scheme.rkt> > 266 2 9251 256)) > (fact . #(struct:srcloc #<path:/Users/sk/Desktop/client.rkt> 5 0 40 139)) > (eval-one-top . #f) > (call-with-exception-handler . #(struct:srcloc > #<path:/Applications/Racket v7.8/collects/racket/private/more-scheme.rkt> > 266 2 9251 256)) > (loop . #(struct:srcloc #<path:/Applications/Racket > v7.8/share/pkgs/drracket/drracket/private/rep.rkt> 1210 24 50804 979)) > (call-with-break-parameterization . #(struct:srcloc > #<path:/Applications/Racket v7.8/collects/racket/private/more-scheme.rkt> > 148 2 4909 517)) > (#f . #(struct:srcloc #<path:/Applications/Racket > v7.8/share/pkgs/drracket/drracket/private/rep.rkt> 1180 9 49153 5062)) > (#f . #(struct:srcloc #<path:/Applications/Racket > v7.8/share/pkgs/drracket/drracket/private/rep.rkt> 1493 15 64385 1548)) > (#f . #(struct:srcloc #<path:/Applications/Racket > v7.8/share/pkgs/gui-lib/mred/private/wx/common/queue.rkt> 435 6 19067 1056)) > (#f . #(struct:srcloc #<path:/Applications/Racket > v7.8/share/pkgs/gui-lib/mred/private/wx/common/queue.rkt> 486 32 21054 120)) > (call-with-break-parameterization . #(struct:srcloc > #<path:/Applications/Racket v7.8/collects/racket/private/more-scheme.rkt> > 148 2 4909 517)) > (eventspace-handler-thread-proc . #(struct:srcloc > #<path:/Applications/Racket > v7.8/share/pkgs/gui-lib/mred/private/wx/common/queue.rkt> 370 11 16515 690)) > exception raised by error display handler: vector-ref: contract violation > expected: vector? > given: '((error 'yield "yielding computation") > #<path:/Users/sk/Desktop/yielder.rkt> 10 4 113 37) > argument position: 1st > other arguments...: > 0; original exception raised: yield: yielding computation > > -- > You received this message because you are subscribed to the Google Groups > "Racket Users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to racket-users+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/racket-users/6aa1ad8a-9f1a-4c11-8b75-5ed3ca09797dn%40googlegroups.com > <https://groups.google.com/d/msgid/racket-users/6aa1ad8a-9f1a-4c11-8b75-5ed3ca09797dn%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/racket-users/CADcueguC-yYNcqx13JA_zqEopn_fzUX%2BzFPq_L3NnDvgK1xMNA%40mail.gmail.com.