> Do you need to do the same thing with file/convertible? The current version only attaches file/convertible.
> > Robby > > > On Thu, Oct 3, 2013 at 1:09 PM, Stephen Chang <stch...@ccs.neu.edu> wrote: >> >> Here's another attempt at a patch. Would someone mind code reviewing it? >> >> Ryan pointed me towards sandbox-namespace-specs and it seems to do the >> trick. I also added some tests and the docs seem to compile ok. >> >> On Wed, Oct 2, 2013 at 7:21 PM, Robby Findler >> <ro...@eecs.northwestern.edu> wrote: >> > namespace-attach-module sets up shared state between two modules so >> > that, in >> > this case, the racket/pretty in one namespace is the same as the >> > racket/pretty in the other. >> > >> > Try putting a printf in the top-level of racket/pretty (and in various >> > other >> > places in that code as it does what it does) and then doing the >> > dynamic-require with and without the attach. >> > >> > Robby >> > >> > >> > On Wed, Oct 2, 2013 at 4:58 PM, Stephen Chang <stch...@ccs.neu.edu> >> > wrote: >> >> >> >> Ok here's another dumb question. Why is that namespace-attach-module >> >> even needed? It seems the dynamic require on the next line does the >> >> desired thing? >> >> >> >> On Wed, Oct 2, 2013 at 4:16 PM, Stephen Chang <stch...@ccs.neu.edu> >> >> wrote: >> >> > Ok thanks for the explanations. I'll try doing one of the last two >> >> > suggestions. >> >> > >> >> > On Wed, Oct 2, 2013 at 4:09 PM, Ryan Culpepper <ry...@ccs.neu.edu> >> >> > wrote: >> >> >> No, the 'racket/pretty' module might be declared even if the symbol >> >> >> isn't >> >> >> defined (or "mapped") in the namespace: >> >> >> >> >> >> > (define ns (make-base-namespace)) >> >> >> > (define repl-ns (current-namespace)) >> >> >> > (parameterize ((current-namespace ns)) >> >> >> (eval '(require (only-in racket/pretty)))) >> >> >> > (parameterize ((current-namespace ns)) >> >> >> (namespace-attach-module repl-ns 'racket/pretty)) >> >> >> namespace-attach-module: a different module with the same name is >> >> >> already in the destination namespace >> >> >> module name: "/opt/racket-5.3.6/collects/racket/pretty.rkt" >> >> >> context...: >> >> >> /opt/racket-5.3.6/collects/racket/private/misc.rkt:87:7 >> >> >> >> >> >> And the symbol can be defined in the namespace even if the module is >> >> >> not >> >> >> declared: >> >> >> >> >> >> > (define ns (make-base-namespace)) >> >> >> > (define repl-ns (current-namespace)) >> >> >> > (parameterize ((current-namespace ns)) >> >> >> (eval '(define pretty-print-handler #t))) >> >> >> > (parameterize ((current-namespace ns)) >> >> >> (namespace-variable-value 'pretty-print-handler)) >> >> >> #t >> >> >> ;; but racket/pretty is not declared, >> >> >> ;; and #t is not a good print handler >> >> >> >> >> >> Ryan >> >> >> >> >> >> >> >> >> >> >> >> On 10/02/2013 03:58 PM, Stephen Chang wrote: >> >> >>>> >> >> >>>> A namespace is a mapping from top-level identifiers to whatever >> >> >>>> they >> >> >>>> are, >> >> >>>> as >> >> >>>> well as a separate mapping from module names to modules (roughly). >> >> >>>> What >> >> >>>> you >> >> >>>> care about here is the second mapping, but you're checking the >> >> >>>> first >> >> >>>> with >> >> >>>> the patch. >> >> >>> >> >> >>> >> >> >>> Thanks for the explanation. That helps a lot. So the danger with my >> >> >>> check is when someone has another definition of pretty-print >> >> >>> handler >> >> >>> but racket/pretty has not been attached? >> >> >>> >> >> >>> But given the context, ie the dynamic require on the next line, it >> >> >>> seems like there's already an assumption about what the identifier >> >> >>> I'm >> >> >>> checking is, so in this specific situation, isnt my check >> >> >>> sufficient? >> >> >>> >> >> >>> >> >> >>> >> >> >>>> >> >> >>>> Robby >> >> >>>> >> >> >>>> >> >> >>>> On Wed, Oct 2, 2013 at 2:45 PM, Stephen Chang >> >> >>>> <stch...@ccs.neu.edu> >> >> >>>> wrote: >> >> >>>>> >> >> >>>>> >> >> >>>>>> Whether that identifier exists in the namespace has nothing to >> >> >>>>>> do >> >> >>>>>> with >> >> >>>>>> whether racket/pretty can be attached. >> >> >>>>> >> >> >>>>> >> >> >>>>> Can you explain this a little more because it's a little >> >> >>>>> unintuitive >> >> >>>>> to >> >> >>>>> me? >> >> >>>>> >> >> >>>>> >> >> >>>>>> >> >> >>>>>> One option would be for install-pretty-printer! to just catch >> >> >>>>>> and >> >> >>>>>> discard >> >> >>>>>> the error. Evaluators for some languages would mysteriously not >> >> >>>>>> have >> >> >>>>>> pretty-printing turned on by default. >> >> >>>>>> >> >> >>>>>> Another option would be to attach racket/pretty before requiring >> >> >>>>>> the >> >> >>>>>> initial >> >> >>>>>> language for the namespace. >> >> >>>>>> >> >> >>>>>> Another option is use #:pretty-print? #f when attaching >> >> >>>>>> racket/pretty >> >> >>>>>> would >> >> >>>>>> fail. >> >> >>>>>> >> >> >>>>>> Ryan >> >> >>>>>> >> >> >>>>> _________________________ >> >> >>>>> Racket Developers list: >> >> >>>>> http://lists.racket-lang.org/dev >> >> >>>> >> >> >>>> >> >> >>>> >> >> >> >> > >> > > > _________________________ Racket Developers list: http://lists.racket-lang.org/dev