On Sun, Oct 28, 2012 at 1:16 PM, Matthias Felleisen <matth...@ccs.neu.edu> wrote: > > Can you make succinct examples of operations that would have > gone wrong with the past interpretation of Any and can you > explain how the new interpretation will do better? Please > share here.
Here's a quick example: #lang racket/load (module m1 typed/racket (define: f : Any (vector 1 2 3)) (provide f)) (module m2 racket (require 'm1) (for/sum ([e f]) e)) (require 'm2) This produces 6, as expected, with the current system; the previous system would have errored because `f` would have been an opaque value. > > > On Oct 28, 2012, at 11:36 AM, Sam Tobin-Hochstadt wrote: > >> On Sun, Oct 28, 2012 at 11:13 AM, Robby Findler >> <ro...@eecs.northwestern.edu> wrote: >>> Was it wrong before? Suboptimal somehow? >> >> It was suboptimal in that more operations should be allowed now (such >> as accessing elements of a mutable vector provided under the type >> `Any`). However, some of the errors that this has caused in practice >> make me think that the previous implementation was wrong as well, >> since some of the programs that broke shouldn't have worked. >> >>> On Oct 28, 2012, at 9:58 AM, Sam Tobin-Hochstadt <sa...@ccs.neu.edu> wrote: >>> >>>> On Wed, Oct 24, 2012 at 8:29 PM, Ryan Culpepper <r...@cs.utah.edu> wrote: >>>>> >>>>> samth: >>>>> - type->contract fixes/changes (9e1cf579a4, 962f2472e1) >>>>> - add #:opaque and #:struct to require/typed (9054d0db7d) >>>> >>>> Typed Racket now handles higher-order values provided to untyped >>>> modules under the type `Any` differently. This may lead to dynamic >>>> errors in some mixed typed/untyped programs, which can be fixed by >>>> using more specific types. >>>> >>>> -- >>>> sam th >>>> sa...@ccs.neu.edu >>>> _________________________ >>>> Racket Developers list: >>>> http://lists.racket-lang.org/dev >> >> >> >> -- >> sam th >> sa...@ccs.neu.edu >> _________________________ >> Racket Developers list: >> http://lists.racket-lang.org/dev > -- sam th sa...@ccs.neu.edu _________________________ Racket Developers list: http://lists.racket-lang.org/dev