On Tue, Apr 21, 2020 at 10:50:44AM -0400, Sam Tobin-Hochstadt wrote: > The problem here is with the optional third argument to `hash-ref`. > Typed Racket only allows `#f` or functions as the third argument. > Plain Racket allows any non-function value as a default, or a function > which is called to produce the default. Since "any non-function" is > not expressible in Typed Racket, it's more restricted here.
I missed that. Thanks. > > The best option is to wrap the third argument in a thunk: `(lambda () > 'other)`. > > As an aside, you probably don't want to use `cast` this extensively in > your program. No, I don't. I hoped it would help, but I was fixing the wrong problem, so it didn't . -- hendrik > > Sam > > On Tue, Apr 21, 2020 at 10:35 AM Hendrik Boom <[email protected]> wrote: > > > > 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 [email protected]. > > To view this discussion on the web visit > > https://groups.google.com/d/msgid/racket-users/20200421143453.lauuqi3pb4fdgyhh%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/CAK%3DHD%2BY-pc3Jfg4RgRmAPMqSUxUj8rJsm3np2eq2%2B-J5PWTO4Q%40mail.gmail.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/20200421163253.ui4xuokcgsprhyna%40topoi.pooq.com.

