magicDict

Spiwack, Arnaud arnaud.spiwack at tweag.io
Fri Apr 23 06:15:12 UTC 2021


While I do value consistency, let me pet-peeve for a minute here (sorry in
advance Edward for the rant). The word “reify” comes from the latin “res”,
which means object/thing. It should always mean something along the line of
“making more concrete”. In normalisation by evaluation, for instance, you
reify a semantic value as syntax (an object of the language of study), and
you reflect values of the language into the semantic domain.

To me, the reflection library uses the terms inconsistently. For instance
you have the type ReifiedMonoid for the concrete type representing a monoid
instance. This is, in my opinion, the right terminology. However, a
ReifiedMonoid should be the product of reification, but in the reflection
library it actually gets reify-d further. This doesn’t seem to work at the
grammar level. I contend that the function should have been reflect all
along: you reflect a concrete dictionary object into the nebulous,
untouchable world of type class instances.

It’s probably too late to fix the reflection library, hence me never
complaining about it (in public :-) ). But I vote we don’t perpetuate this
situation, and still call the function reflectDict.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20210423/2b136f9e/attachment.html>


More information about the ghc-devs mailing list