On Tue, Jul 31, 2012 at 5:04 PM, Ray Racine <ray.rac...@gmail.com> wrote: > Hi, > > I created a github repo which has a few small files which I think > demonstrate 0, 1 or 3 bugs in Typed Racket.
I finally got a chance to take a look at this, sorry for the delay. > The three potential bugs. > 1. The show stopper is found at the very bottom of samples.rkt. This is not a bug in Typed Racket; you aren't creating enough streams. I don't fully understand how iteratees are supposed to work, but roughly, you're trying to produce and (Iteratee A (Iteratee A D)). For a `Continue` structure to match this, its `step` function has to take `(Stream A)` as input, and produce `(Iteratee A (Iteratee A D))`. However, the `iter` value that you're producing is of type `(Iteratee A D)`, which isn't what you want. Your `tee` function produces an iteratee that, I think, always stays at the beginning of its argument, which isn't what you want. > 2. There is a something, I think, not quite right just above #1 also in > samples.rkt. The inferencer appears to rashly and prematurely assume > (Enumerator Integer A) here is (Enumerator Integer Integer). What would `A` be bound to here? Do you want the result to be (All (A) (Enumerator Integer A))? If so, you'll need to change the type of `enumerator/list` to: (: enumerator/list (All (D) (Listof D) -> (All (A) (Enumerator D A)))) That will require some other changes in the rest of the `samples.rkt` file, it looks like. -- sam th sa...@ccs.neu.edu ____________________ Racket Users list: http://lists.racket-lang.org/users