[racket-dev] more general typed/scheme bafflement...

From: John Clements (clements at brinckerhoff.org)
Date: Tue Jun 7 19:16:17 EDT 2011

I see that map works on multiple lists in at least one circumstance, e.g. (map + (list 3 4) (list 4 5)).  I couldn't get it to work with "list", though, even when I specialized list to a two-argument function:

#lang typed/racket

(: list2 (All (T) (T T -> (List T T))))
(define (list2 a b) (list a b))

(map list2 '(3 4 5) '(10 11 12))

==> Type Checker: Polymorphic function map could not be applied to arguments:
Domains: (a -> c) (Pairof a (Listof a))
         (a b ... b -> c) (Listof a) (Listof b) ... b
Arguments: (All (T) (T T -> (List T T))) (List Positive-Byte Positive-Byte Positive-Byte) (List Positive-Byte Positive-Byte Positive-Byte)
 in: (map list2 (quote (3 4 5)) (quote (10 11 12)))

Is there some easy fix here?

Also, I am deeply confused by the second of those domains, that makes it appear that I'm supposed apply map to a bunch of lists and then to a bare "b".

John

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 4624 bytes
Desc: not available
URL: <http://lists.racket-lang.org/dev/archive/attachments/20110607/bc9ac735/attachment.p7s>

Posted on the dev mailing list.