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.

