Why not implicit parameters?

Implicit parameters seem to be useful for implementing things like HasCallStack and HasExceptionContext, but I’m wary of using them for “dependency injection” because of the reasons mentioned in this thread.

Also, for certain use cases, I would prefer thread-local storage over implicit parameters as an alternative to ReaderT.