[racket] Getting an expression to type

From: Spencer Florence (spencer at florence.io)
Date: Sun Jan 26 14:34:36 EST 2014

Unfortunately that was a simplified example. The in the program I'm
writing, the type isn't Number but (All (A B) ((A -> B) -> (A -> B))),
which I can't check for with a predicate as far as I know.


On Sun, Jan 26, 2014 at 2:31 PM, Eric Dobson <eric.n.dobson at gmail.com>wrote:

> That is definitely a bug, not sure exactly what is going wrong though.
> Can you file a bug for this?
>
> In terms of getting your program to run, if you replace '(not
> (parameter? p))' with 'number?' it should work.
>
> On Sun, Jan 26, 2014 at 10:08 AM, Spencer Florence <spencer at florence.io>
> wrote:
> > I'm having difficulty getting the following code to type:
> >
> > #lang typed/racket
> > (: test : ((U Number (Parameterof Number)) -> Number))
> > (define (test p)
> >   (if (not (parameter? p))
> >       p
> >       (p)))
> >
> > But I get the error:
> >> Type Checker: Expected Number, but got (U Complex (Parameterof Number))
> >> in: p
> > On the then branch of the if. Is there a way to convince this to type?
> >
> > --Spencer
> >
> > ____________________
> >   Racket Users list:
> >   http://lists.racket-lang.org/users
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20140126/acb4ff79/attachment-0001.html>

Posted on the users mailing list.