3 ms·
You might be interested in reflection/implicit configurations: https://hackage.haskell.org/package/reflection https://hackage.haskell.org/package/reflection Th
by fmap 10y ago
You might be interested in reflection/implicit configurations: https://hackage.haskell.org/package/reflection https://hackage.haskell.org/package/reflection
This (ab)uses Haskell's type class mechanism to essentially implement dependency injection directly. The implementation looks a bit dirty, but this is a feature that more modern approaches to generic programming can handle natively (e.g., http://homepages.inf.ed.ac.uk/wadler/papers/implicits/implicits.pdf http://homepages.inf.ed.ac.uk/wadler/papers/implicits/implic... ).
In particular, there is nothing shady about the semantics of implicitly passing configuration values/dependencies. Your functions are still referentially transparent if you treat the implicit dependencies as additional parameters (which is what they are, no matter how you implement it).