Starting to try Typed Racket for real. It's been really fun! Overall the error messages have been clear and helpful. Only a couple things so far have stumped me. Here's one.
Although this is fine: (: h (HashTable Symbol String)) (define h (make-hash)) This is an error: (: ph (Parameterof (HashTable Symbol String))) (define ph (make-parameter (make-hash))) ; Type Checker: Polymorphic function `make-hash' could not be applied to arguments: ; Domains: (Listof (Pairof a b)) ; ; Arguments: ; ; in: (make-hash) 1. I don't understand why. Why does `(make-hash)` satisfy `(HashTable Symbol String)` alone, but not wrapped in `Parameterof`? 2. I'm not sure what the appropriate resolution is. (a) Although this typechecks... (: ph (Parameterof (HashTable Symbol String))) (define ph (make-parameter (make-hash '([n/a . ""])))) ...it's a kludge. (b) From the REPL I see that the type of `(make-hash)` is `(HashTable Any Any)`. Although I _could_ try: (: ph (Parameterof (U (HashTable Any Any) (HashTable Symbol String)))) (define ph (make-parameter (make-hash ))) (i) that's not correct (why bother typing it Any/Any?) (ii) that gives the same original type check error above ____________________ Racket Users list: http://lists.racket-lang.org/users