On Sun, Aug 4, 2013 at 10:40 AM, Carl Eastlund <c...@ccs.neu.edu> wrote:
> On Sun, Aug 4, 2013 at 4:32 AM, Yi Dai <plm...@gmail.com> wrote: > >> >> >> >> On Sun, Aug 4, 2013 at 10:20 AM, Carl Eastlund <c...@ccs.neu.edu> wrote: >> >>> Yi, >>> >>> Most #lang languages implicitly create a module from the contents of the >>> file. #lang racket/load, on the other hand, runs the contents of the file >>> as top-level terms outside of any module. The provide form is not legal at >>> the top level, as it is meaningless -- there's no module to provide things >>> from. You need to either switch back to #lang racket or remove the >>> provide, depending on what you're trying to accomplish. >>> >> >> Thanks for the answer, Karl. I also found the answer in the doc: >> http://docs.racket-lang.org/reference/load-lang.html. But very >> confusingly, the doc keeps saying "racket/load" module. >> > > Yes, the file is technically a module. However, the code you write is not > evaluated in the context of that module. It is instead evaluated in a > dynamically-generated top-level context. It might be clearer if we look at > the explicit module generated by the two #lang languages: > > #lang racket > <code1> > <code2> > ... > > is equivalent to > > (module <filename> racket > <code1> > <code2> > ...) > > However, > > #lang racket/load > <code1> > <code2> > ... > > is (basically) equivalent to > > (module <filename> racket > (eval (quote <code1>)) > (eval (quote <code2>)) > ...) > Ah, now it is clearer. Thanks a lot, Karl. > > >> >> >>> On Sun, Aug 4, 2013 at 4:12 AM, Yi Dai <plm...@gmail.com> wrote: >>> >>>> Hi, >>>> >>>> >>>> I have the following code in a file named `foo.rkt`: >>>> >>>> ``` >>>> #lang racket/load >>>> >>>> (provide foo) >>>> >>>> (define foo 'bar) >>>> ``` >>>> >>>> When trying to run the code, I got the following confusing error: >>>> >>>> > `provide`: not at module level in: `(provide foo)` >>>> >>>> What does this mean? Why `provide` is not at module level? >>>> Use `#lang racket` instead does not pose this problem. I am >>>> confused. Any idea? >>>> >>>> >>>> Yours truly, >>>> >>>> Yi >>>> >>>> ____________________ >>>> Racket Users list: >>>> http://lists.racket-lang.org/users >>>> >>>> >>> >> >> ____________________ >> Racket Users list: >> http://lists.racket-lang.org/users >> >> >
____________________ Racket Users list: http://lists.racket-lang.org/users