Prisms and Isos between finitary types.
Provides convenience optics for working with finitary types. Specifically gives an Iso for inter-converting between types of the same cardinality, and a Prism for inter-converting between types of different cardinalities.
finitary-optics
What's this all about, then?
If a type has an instance of Finitary
, we know the type's cardinality n
, and can convert any (non-bottom) inhabitant to a value of Finite n
. We can use this to inter-convert between these types. This can sometimes be useful.
This library provides some optics (specifically a Prism
and an Iso
) which help us do this kind of conversion more conveniently.
Sounds good! Can I use it?
We've tested this library on GHCs 8.6.5, 8.8.3 and 8.10.1, on GNU/Linux x86_64. If you use this library on any other platforms, let us know how it goes - especially if something breaks!
License
This library is under the GNU General Public License, version 3 or later (SPDX code GPL-3.0-or-later
). For more details, see the LICENSE.md
file.