On Aug 17, 2010, at 9:21 PM, Shriram Krishnamurthi wrote: > As some of you know, we're building a semantics for Python in Racket. > At my instigation, my students are doing everything in Typed Racket. > However, when we got to generators, we ran up against a problem: we > couldn't type the generator code (a bad interaction between mutation > and occurrence typing). My students tried a few different things, > none of which worked, and got stalled for a few days. > > But hey, this is Racket! So in an hour I'd rewritten the generator > abstraction in untyped Racket, exported it, imported it with a typed > interface, and we were back in action.
Why did you even have to rewrite it? > See, it's not the interface > that couldn't be expressed: it was the implementation that couldn't be > checked. Most type languages conflate the two issues. 'Everyone' (for some value of 'every') understands that this is how it works for the Y combinator. > Moral: If you want a language to model complex systems (and what's > more complex than Python?), you need flexibility. And Racket is > nothing if not catholic. (Well, it's catholic quite true, but not yet Catholic.) -- Matthias _________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev