blog post du jour:
https://blog.veritates.love/functions_as_data.html
Sticking Functions Where They Donʼt Belong!
Extensible Defunctionalization with Typeclasses.
Or, Functions in Pure Data in Haskell.
you can sneak functions into NFData by using typeclass dictionaries, if you commit to some form of data to serve as its closure
great for hooking into a compiler :) and i'm sure lots of other applications
class Existentiable sem => Semantics sem where
... sem -> [some data] ...
type Existentiable hidden = (Typeable hidden, NFData hidden, Ord hidden, Show hidden)
data ForeignSemantics = forall sem. Semantics sem => ForeignSemantics sem


