In typed Racket I define a hashtable:

(: vector-to-contract (HashTable TType CContract))

(define vector-to-contract
  (make-hash
   (cast '(
           (_bytes . bytes?)
           (_s8vector . s8vector?)
           (_u16vector . u16vector?)
           (_s16vector . s16vector?)
           (_u32vector . u32vector?)
           (_s32vector . s32vector?)
           (_u64vector . u64vector?)
           (_s64vector . s64vector?)
           (_f32vector . f32vector?)
           (_f64vector . f64vector?))
         (Listof (Pair TType CContract))
         )
   ))

And then I try to look something up in it:

( hash-ref vector-to-contract (cast '_bytes TType) (cast 'other CContract))

and I am informed that I cannot, it seems, look up a value of type 
TType in a hastable whose type indicates it looks up things of type 
TType:

Type Checker: Polymorphic function `hash-ref' could not be applied to arguments:
Types: HashTableTop a (-> c) -> Any
       HashTableTop a False -> Any
       HashTableTop a -> Any
Arguments: (HashTable TType CContract) TType CContract
Expected result: AnyValues
 in: (hash-ref vector-to-contract (cast (quote _bytes) TType) (cast 
(quote other) CContract))


How *does* one use hashtables in typed Racket?

-- 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 racket-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/20200421143453.lauuqi3pb4fdgyhh%40topoi.pooq.com.

Reply via email to