On Tue, Aug 17, 2010 at 9:21 PM, Shriram Krishnamurthi <s...@cs.brown.edu> 
wrote:
> we couldn't type the generator code (a bad interaction between mutation
> and occurrence typing).

In almost all cases, when TR rejects your program because of this,
your code is incorrect in the presence of threads and/or futures (and
sometimes continuations) as well.  For example, this program:

#lang typed/racket

(: x Any)
(define x #f)
(: f (Any -> Void))
(define (f v) (set! x v))

(if (number? x)
    ;; no call to `f' here
    (add1 x)
    0)

won't typecheck, but you might think it should.  However, the call to
`f' can be in another thread/future, which can happen between the test
and the `add1', breaking your program.
-- 
sam th
sa...@ccs.neu.edu
_________________________________________________
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev

Reply via email to