Thanks for looking at it. Digesting your feedback ... On Fri, Aug 3, 2012 at 12:02 PM, Sam Tobin-Hochstadt <sa...@ccs.neu.edu>wrote:
> 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