[racket] `provide` failed under `#lang racket/load`

From: Carl Eastlund (cce at ccs.neu.edu)
Date: Sun Aug 4 04:20:28 EDT 2013

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.

Carl Eastlund


On Sun, Aug 4, 2013 at 4:12 AM, Yi Dai <plmday at 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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20130804/a2927495/attachment-0001.html>

Posted on the users mailing list.