[racket] Generics and modules
> I've been wondering whether it would be more practical for struct-generated
> names to concatenate with colon (":") as a separator, rather than with minus
> ("-").
1. Yes. In addition to name conflicts, it's harder on human code
readers (or at least, me) when '-' is overloaded. Especially if the
struct name and/or field name have a hyphen. Quick, is 'a-b-c' a
struct 'a' with a field 'b-c', or a struct 'a-b' with a 'c' field?
Using ':' would be clearer. (If '.' weren't a special reader char,
that would be even better, wrt other langs.) It's not a huge deal,
but it's a bit more cognitive load when learning Racket and even (for
me) reading code after a few years.
2. Also, although I haven't given it deep thought and maybe it's a
poor idea, I'd like structs to join the `dict` club to which almost
everything else belongs.
That way, if `r` were an instance of a `roomba` struct with a
`protocol` field, you could say something like
(dict-ref r 'protocol)
And further, if you're willing to pay more runtime cost of redefining
#%app, you could also sugar as:
(r 'protocol)
and/or
('protocol r)
Plus a threading macro can make nested struct references nearly as
concise as in a {} lang.
Maybe this is a silly idea because, if I _really_ want this, today I
could simply choose some dict such as a hasheq instead of using a
struct. Well, for my own data definitions; there's still the matter of
working with other collects.