On Mon, May 18, 2020 at 04:51:26PM -0400, Sam Tobin-Hochstadt wrote:
> The systematic way to do it is to use `inst`.
> 
> Here's the first example:
> 
> (define hash-list : (Listof (Pair Symbol Natural)) (list))
> ((inst sort (Pair Symbol Natural) String) hash-list string<? #:key (λ
> ((p : (Pair Symbol Natural))) (symbol->string (car p))) #:cache-keys?
> #t)
> 
> This program works already, but I wasn't sure what the `y` binding was
> doing in your second example:

I don't either.  It was originally someone else's program, which I'm coverting 
to typed 
Racket in order to understand it better.

-- hendrik

> 
> (for*/list : (Listof (Pair Symbol Natural)) ((p : (Pair Symbol
> Natural) (in-list hash-list))
>                                              (k : Symbol (in-value (car p)))
>                                              (v : Natural (in-value (cdr p)))
>                                              #:when (not (= v 1))
>                                              )
>   (cons k v))
> 
> Sam
> 
> On Mon, May 18, 2020 at 4:33 PM Hendrik Boom <[email protected]> wrote:
> >
> > I keep getting the messages like
> >
> > Type Checker: Inference for polymorphic keyword functions not supported in: 
> > (sort hash-list string<? #:key (λ ((p : (Pair Symbol Natural))) 
> > (symbol->string (car p))) #:cache-keys? #t)
> >
> > or
> >
> > Type Checker: Polymorphic function `cons' could not be applied to arguments:
> > Types: a (Listof a) -> (Listof a)
> >        a b -> (Pairof a b)
> > Arguments: (U Exact-Nonnegative-Integer Symbol) (Listof (Pairof Symbol 
> > Nonnegative-Integer))
> > Expected result: (Listof (Pairof Symbol Nonnegative-Integer))
> >  in: (for*/list : (Listof (Pair Symbol Natural)) ((p : (Pair Symbol 
> > Natural) (in-list (hash->sorted-list pname-map))) (k : Symbol (in-value 
> > (car p))) (v : Natural (in-value (cdr p))) #:when (not (= v 1)) (y (list k 
> > v))) y)
> >
> > Is there some systematic way to code this explicitly so it
> > doesn't have to try guesswork? (hich it refuses to do)
> >
> > And is it really unable to figure out that an
> > Exact-Nonnegative-Integer is a Nonnegative-Integer?
> >
> > -- hendrik
> >
> > --
> > You received this message because you are subscribed to the Google Groups 
> > "Racket Users" group.
> > To unsubscribe from this group and stop receiving emails from it, send an 
> > email to [email protected].
> > To view this discussion on the web visit 
> > https://groups.google.com/d/msgid/racket-users/20200518203342.4vcvrsrvkmld4tmh%40topoi.pooq.com.

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/20200518221533.uwflu2ulyzeolcmv%40topoi.pooq.com.

Reply via email to