Yes. The error changed to "hello: unbound identifier, also no #%app ..."
for me, so I also had to add `(namespace-require (quote-module-path
restricted) ns)` to get it working.

Were you expecting that I had to do that too? The docs for the
`make-base-*-namespace` procedures make it sound like attaching is
sufficient.


On 4/16/21 1:51 PM, Matthew Flatt wrote:
> The name `'restricted` is allowed as a shorthand in `require` because
> `require` knows what module it's in. The `namespace-attach-module`
> function does not try to infer a module context from the namespace
> argument; it uses the namespace argument only for its registry. So, you
> need to use the full name of the submodule.
>
> The `quote-module-path` form expands to a full name using its syntactic
> context (i.e., the enclsoing module's name), so
>
>    (namespace-attach-module (namespace-anchor->namespace a)
>                             (quote-module-path restricted)
>                             ns)
>
> is probably what you want.
>
>
> At Fri, 16 Apr 2021 17:29:28 +0000, Sage Gerard wrote:
>> Why does this raise "namespace-attach-module: module not declared (in
>> the source namespace)"?
>>
>> I expected that the `restricted` submodule would be both declared and
>> instantiated by the time control reached `namespace-attach-module`.
>>
>> (module anon racket/base
>>     (module restricted racket/base
>>       (provide #%app #%datum #%top hello)
>>       (define (hello h) h))
>>     (require 'restricted)
>>     (define ns (make-empty-namespace))
>>     (define-namespace-anchor a)
>>     (namespace-attach-module (namespace-anchor->namespace a) ''restricted ns)
>>     (displayln (eval '(hello "world") ns)))
>>
>> --
>> ~slg

--
~slg


-- 
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/e11dff02-0a27-06bd-9b4c-128f15e65849%40sagegerard.com.

Reply via email to