[racket] Contracts and submodules
Oh, of course. Sorry for the confusion.
Robby
On Thu, Nov 29, 2012 at 8:56 PM, Matthew Flatt <mflatt at cs.utah.edu> wrote:
> I don't see a bug.
>
> The body of a `module+' module sees all of the bindings of its
> enclosing module, unless those bindings are shadowed.
> For example,
>
> #lang racket
> (define x 5)
> (module+ main
> x)
>
> would print 5 (even though `x' is not exported), but
>
> #lang racket
> (define x 5)
> (module+ main
> (require (rename-in racket/base [null x]))
> x)
>
> prints the empty list (since the import shadows the outer `x'), and
>
> #lang racket
> (define x 5)
> (define y 6)
> (provide (rename-out [y x]))
> (module+ main
> (require (submod ".."))
> x)
>
> prints 6 (also due to shadowing).
>
> In the examples below, the first one's submodule gets the enclosing
> module's `ident-number' binding. In the second example, the enclosing
> `ident-number' is shadowed with the contracted `ident-number' import.
>
> At Thu, 29 Nov 2012 20:57:25 -0500, Harry Spier wrote:
>> Thanks Robby,
>>
>> Do I need to submit a bug report.
>> Harry
>>
>> On Thu, Nov 29, 2012 at 8:32 PM, Robby Findler
>> <robby at eecs.northwestern.edu> wrote:
>> > That looks like a bug to me.
>> >
>> > Robby
>> >
>> > On Thu, Nov 29, 2012 at 6:59 PM, Harry Spier <vasishtha.spier at gmail.com>
>> wrote:
>> >> Dear list members,
>> >>
>> >> Case 1 below doesn't give a contract violation but case 2 does. Is
>> >> this desired behavour or is it a bug?
>> >>
>> >> In DrRacket
>> >> Case 1
>> >> ---------
>> >> #lang racket
>> >> (provide (contract-out [ident-number (-> number? number?)]))
>> >> (define (ident-number x) x)
>> >> (module+ main
>> >> (ident-number 'a))
>> >>
>> >>> 'a
>> >>
>> >>
>> >> Case 2
>> >> ------------
>> >> #lang racket
>> >> (provide (contract-out [ident-number (-> number? number?)]))
>> >> (define (ident-number x) x)
>> >> (module+ main
>> >> (require (submod ".."))
>> >> (ident-number 'a))
>> >>
>> >>>
>> >> ident-number: contract violation
>> >> expected: number?
>> >> given: 'a
>> >> in: the 1st argument of
>> >> (-> number? number?)
>> >> contract from:
>> >> c:\users\harry\ocr_project\test2.rkt
>> >> blaming:
>> >> (c:\users\harry\ocr_project\test2.rkt main)
>> >> at: c:\users\harry\ocr_project\test2.rkt:2.24
>> >>
>> >> Thanks,
>> >> Harry Spier
>> >> ____________________
>> >> Racket Users list:
>> >> http://lists.racket-lang.org/users
>> ____________________
>> Racket Users list:
>> http://lists.racket-lang.org/users
> ____________________
> Racket Users list:
> http://lists.racket-lang.org/users