Chung-chieh Shan wrote (snipped):
The enabling technique behind our solution is to propagate values via types (literally), with the help of polymorphic recursion and higher-ranked polymorphism. The technique essentially emulates local type-class instance declarations. Configuration parameters are propagated throughout the code implicitly as part of type inference rather than explicitly by the programmer.
Crikey! You represent configuration values which are integers by encoding them as a type with constructors data Zero data Twice s data Succ s data Pred s and you encode general values which are instances of Storable by casting their binary representation (pinned by a StablePtr) into bytes and then encoding the result as integers. My mind boggles. It would be nice if your paper included an appendix containing a main program which, say, used a graphics library including configuration parameters in your style. (Say, default font (string), font size (integer) and mouse handedness (bool).)