Oops, I'm afraid things are getting off topic. Just to clarify, my question is really as the title states, about top-level-bind-scope, which is used by the expander to achieve certain effects when expanding define-values/define-syntaxes forms at the top level. I'm mainly trying to get a better understanding of those effects, and whether top-level-bind-scope is necessary to implement them.
On Mon, Mar 23, 2020 at 8:11 PM Hendrik Boom <hend...@topoi.pooq.com> wrote: > On Mon, Mar 23, 2020 at 05:55:14PM -0400, George Neuner wrote: > > On Mon, 23 Mar 2020 16:57:26 -0400, Hendrik Boom > > <hend...@topoi.pooq.com> wrote: > > > > >On Mon, Mar 23, 2020 at 02:46:53PM -0400, George Neuner wrote: > > >> On Mon, 23 Mar 2020 01:45:40 -0700 (PDT), Yongming Shen > > >> <symi...@gmail.com> wrote: > > >> > > >> >I have the following as `module-that-defines-fib`: > > >> > > > >> > #lang racket > > >> > (provide fib) > > >> > (define fib "fib") > > >> > > > >> >And this is the error that I got (using Racket 7.6): > > >> > > > >> > ; application: not a procedure; > > >> > ; expected a procedure that can be applied to arguments > > >> > ; given: "fib" > > >> > ; [,bt for context] > > >> > > >> > > >> I've run into this problem before ... I don't recall the official > > >> explanation, but my takeaway was that Racket does not permit you to > > >> directly *export* a value - you have to export a function or macro > > >> that produces the value. > > > > > >That seems like an extremely arbitrary restriction. > > > > Well, Racket considers exported objects to immutable. You can export > > a simple value (e.g., "foo" or 42) but it can only be used as a > > constant. If what you need is a module variable then the only way to > > expose it is via an access function. > > That makes sense. > > Or I suppose you could build a one-element mtable array and export that. > The you still can't change the variable, but can change teh value inside > it. > > -- hendrik > > > > AFAIHS, the OP has not shown us the code which uses the provided > > object, so we really don't know what it was trying to do when the > > error occurred. > > > > George > > > > -- > > 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/p9bi7fpigiqm3tc3togm4vmontlv5v70ti%404ax.com > . > > -- > You received this message because you are subscribed to a topic in the > Google Groups "Racket Users" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/racket-users/7Y-a1r9oRPI/unsubscribe. > To unsubscribe from this group and all its topics, 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/20200324001128.u5rp6pw677lbhleg%40topoi.pooq.com > . > -- 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/CAAFrGrSRHzqvZuX6QOYdYPrB54i%3D%3DOQzBGja8qXeaTNUfB9Syg%40mail.gmail.com.