Note that Racket's `case` (unlike the R5RS or R6RS versions) is based on `equal?`, so the expression:
(case (list 'a)
[((a))
"ok"]
[else
#f])
reliably produces `"ok"`.
Also, as you very well may know, the left-hand side of a `case` clause isn't an implicitly-quoted list expression: it's a parenthesized sequence of implicitly-quoted expressions. I mention this because, often, you might represent a constant as a symbol. If you use a case expression to, in logical terms, test if some value is a member of a "list" of constant symbols, there aren't actually any Racket list values involved.
It's often a good choice to use `match` rather than `case`, since `match` is more flexible and extensible. However, `match` doesn't provide `case`'s guarantee of O(log N) performance, which can be important if you are generating very large case expressions.