Using haskell typelevel programming to implement reflective features. This can be used to eg. implement persistence or serialization.
I'm following chapter 13 of "Thinking with types" to implement a some building blocks of a most simple persistence framework