I think it makes sense (and might be implementable) for the error
message to say:

send: no such method
  method name: m <boudn by define-member-name in x.rkt:33>

or suchlike.

Robby


On Fri, Mar 25, 2016 at 9:13 PM, Matthias Felleisen
<[email protected]> wrote:
>
> Consider this program (a poem of a real problem I encountered):
>
> #lang racket
>
> (module server racket
>   (provide c%)
>
>   (define c%
>     (class object%
>       (super-new)
>       (define/public (m) 0))))
>
> (module client racket
>   (require (submod ".." server))
>
>   (define-local-member-name m)
>
>   (define d%
>     (class object%
>       (super-new)
>       (define/public (m o)
>         (displayln (interface->method-names (object-interface o)))
>         (send o m))))
>
>   (module+ test
>     (require (submod ".."))
>     (send (new d%) m (new c%))))
>
> (require (submod 'client test))
>
> If you run this, you will get
>
> Welcome to DrRacket, version 6.4.0.14--2016-03-19(-/f) [3m].
> Language: racket, with debugging.
> (o has methods: (m))
> . . send: no such method
>   method name: m
>   class name: c%
>
> So right after confirming that ‘m' is a method of o, our dear friend Racket 
> tells us that m is not a a method of o.
>
> I get it. The define-local-member-name ‘kills' the ‘m’ from ‘server’ as well 
> as client outside of the scope, but that’s because Racket fails to 
> acknowledge that some positions are referentially transparent and some are 
> not when it replaces ‘m’ with the gensym-ed identifier that replaces it in 
> scope.
>
> I really would like this program to run and if not, I’d like to record it 
> here why our implementation (as opposed to a specification) fails.
>
> — Matthias
>
> --
> You received this message because you are subscribed to the Google Groups 
> "Racket Developers" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> To post to this group, send email to [email protected].
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/racket-dev/F72F48F3-1989-42B9-8369-E8C96362C1DD%40ccs.neu.edu.
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-dev/CAL3TdOMOPqS9%2Bc9b1DQEHQw1Lw9Vx-OgP4es2JDuwPM1k6cTeA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to