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.

