[racket] Typed Racket - Type Check Failures (Bugs???) With Samples

From: Ray Racine (ray.racine at gmail.com)
Date: Fri Aug 3 12:40:25 EDT 2012

Thanks for looking at it.  Digesting your feedback ...

On Fri, Aug 3, 2012 at 12:02 PM, Sam Tobin-Hochstadt <samth at ccs.neu.edu>wrote:

> On Tue, Jul 31, 2012 at 5:04 PM, Ray Racine <ray.racine at 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
> samth at ccs.neu.edu
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20120803/58101280/attachment.html>

Posted on the users mailing list.