Are you sure you meant "hash-ref!" and not just "hash-ref”?

Because even with (hash-ref! my-hash size (lambda () #f)), it would expect the 
#f to be of type (Listof String), which it isn’t.  

On Jun 27, 2014, at 3:32 PM, Manfred Lotz <[email protected]> wrote:

> I tried this:
> 
> #lang typed/racket/base
> 
> (: my-hash (HashTable Nonnegative-Integer (Listof String)))
> (define my-hash (make-hash))
> 
> 
> 
> (: my-hash-add (-> Nonnegative-Integer String Void))
> (define (my-hash-add size s)
>  (let* ([val (hash-ref! my-hash size #f)])
>    (if val
>        (hash-set! my-hash size (cons s val))
>        (hash-set! my-hash size (list s)))))
> 
> and got:
> 
> test.rkt:10:14: Type Checker: Polymorphic function `hash-ref!' could
> not be applied to arguments: Argument 1:
>  Expected: (HashTable a b)
>  Given:    (HashTable Nonnegative-Integer (Listof String))
> Argument 2:
>  Expected: a
>  Given:    Nonnegative-Integer
> Argument 3:
>  Expected: (-> b)
>  Given:    False
> 
>  in: (hash-ref! my-hash size #f)
>  context...:
>   
> /home/manfred/racket/share/pkgs/typed-racket-lib/typed-racket/typecheck/tc-toplevel.rkt:249:0:
>  type-check 
> /home/manfred/racket/share/pkgs/typed-racket-lib/typed-racket/tc-setup.rkt:40:0:
>  tc-setup 
> /home/manfred/racket/share/pkgs/typed-racket-lib/typed-racket/typed-racket.rkt:25:4
>   standard-module-name-resolver
> 
> 
> What can I do to make this work?
> 
> 
> -- 
> Manfred
> 
> 
> 
> 
> ____________________
>  Racket Users list:
>  http://lists.racket-lang.org/users


____________________
  Racket Users list:
  http://lists.racket-lang.org/users

Reply via email to