proxied is a simple library that exports a function to convert constant functions to ones that take a
proxy value in the
Data.Proxied. This is useful for retrofiting typeclasses that have functions that return a constant value for any value of a particular type (but still need to consume some value, since one of the parameterized types must appear in a typeclass function). Often, these functions are given
undefined as an argument, which might be considered poor design.
Proxy, however, does not carry any of the error-throwing risks of
undefined, so it is much more preferable to take
Proxy as an argument to a constant function instead of
Proxy was included in
base until GHC 7.8, so many of
base‘s typeclasses still contain constant functions that aren’t amenable to passing
proxied addresses this issue by providing variants of those typeclass functions that take an explicit
This library also contains the “Data.Proxyless” module, which works in the opposite direction. That is, one can take functions which take
undefined) as an argument and convert them to functions which take no arguments. This trick relies on the
-XTypeApplications extension, so it is only available with GHC 8.0 or later.
- Added the
- Initial commit