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 <[email protected]> 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
> > <[email protected]> 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
> > >> <[email protected]> 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 [email protected].
> > 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
> [email protected].
> 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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/CAAFrGrSRHzqvZuX6QOYdYPrB54i%3D%3DOQzBGja8qXeaTNUfB9Syg%40mail.gmail.com.

Reply via email to