Bidirectional conversion between two types with no loss of information. The bidirectionality is encoded via a recursive dependency with arguments flipped.
You can read the signature IsomorphicTo a b as "B is isomorphic to A".
Laws
B is isomorphic to A if and only if there exists a conversion from B to A (to) and a conversion from A to B (from) such that:
from . to = id- For all values of B converting from B to A and then converting from A to B produces a value that is identical to the original.to . from = id- For all values of A converting from A to B and then converting from B to A produces a value that is identical to the original.
Usage
This class is particularly easy to use in combination with
the TypeApplications extension making it clear to the reader what sort
of conversion he sees. E.g.,
fromString = from @StringtoText = to @TextThe types are also self-evident:
> :t from @String
from @String :: IsomorphicTo b String => String -> b> :t to @Text
to @Text :: IsomorphicTo Text b => b -> TextInstance Definition
For each pair of isomorphic types (A and B) the compiler will require
you to define two instances, namely: IsomorphicTo A B and IsomorphicTo
B A.
Methods
to :: b -> a
Instances99IsomorphicTo, …
IsomorphicTo ByteArray ByteArrayDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo ByteArray BuilderDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo ByteArray ByteStringDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo ByteArray ByteStringDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo ByteArray ShortByteStringDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo Builder ByteArrayDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo Builder BuilderDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo Builder ByteStringDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo Builder ByteStringDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo Builder ShortByteStringDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo ByteString ByteArrayDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo ByteString BuilderDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo ByteString ByteStringDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo ByteString ByteStringDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo ByteString ShortByteStringDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo ByteString ByteArrayDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo ByteString BuilderDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo ByteString ByteStringDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo ByteString ByteStringDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo ByteString ShortByteStringDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo ShortByteString ByteArrayDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo ShortByteString BuilderDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo ShortByteString ByteStringDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo ShortByteString ByteStringDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo ShortByteString ShortByteStringDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo IntSet IntSetDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo Integer IntegerDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo String TextDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo String BuilderDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo String TextDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo Int16 Int16Defined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo Int16 Word16Defined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo Int32 Int32Defined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo Int32 Word32Defined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo Int64 Int64Defined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo Int64 Word64Defined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo Int8 Int8Defined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo Int8 Word8Defined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo Rational RationalDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo Word16 Int16Defined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo Word16 Word16Defined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo Word32 Int32Defined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo Word32 Word32Defined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo Word64 Int64Defined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo Word64 Word64Defined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo Word8 Int8Defined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo Word8 Word8Defined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo Bool BoolDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo Char CharDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo Double DoubleDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo Float FloatDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo Int IntDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo Int WordDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo Word IntDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo Word WordDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo Text StringDefined in isomorphism-class-0.1.0.12 · IsomorphismClassPerforms replacement on invalid Unicode chars in the string.
IsomorphicTo Text TextDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo Text BuilderDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo Text TextDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo Builder StringDefined in isomorphism-class-0.1.0.12 · IsomorphismClassPerforms replacement on invalid Unicode chars in the string.
IsomorphicTo Builder TextDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo Builder BuilderDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo Builder TextDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo Text StringDefined in isomorphism-class-0.1.0.12 · IsomorphismClassPerforms replacement on invalid Unicode chars in the string.
IsomorphicTo Text TextDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo Text BuilderDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo Text TextDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo ByteArray [Word8]Defined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo Builder [Word8]Defined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo ByteString [Word8]Defined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo ByteString [Word8]Defined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo ShortByteString [Word8]Defined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo IntSet (Set Int)Defined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo (Set Int) IntSetDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo [Word8] ByteArrayDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo [Word8] BuilderDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo [Word8] ByteStringDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo [Word8] ByteStringDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo [Word8] ShortByteStringDefined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo (First a) (First a)Defined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo (Last a) (Last a)Defined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo (IntMap a) (IntMap a)Defined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo (Seq a) (Seq a)Defined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo (Seq a) (Vector a)Defined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo (Seq a) [a]Defined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo (Set a) (Set a)Defined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo (Product a) (Product a)Defined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo (Sum a) (Sum a)Defined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo (Maybe a) (Maybe a)Defined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo (Vector a) (Seq a)Defined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo (Vector a) (Vector a)Defined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo (Vector a) [a]Defined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo [a] (Seq a)Defined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo [a] (Vector a)Defined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo [a] [a]Defined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo (IntMap v) (Map Int v)Defined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo (Map Int v) (IntMap v)Defined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo (Map k v) (Map k v)Defined in isomorphism-class-0.1.0.12 · IsomorphismClassIsomorphicTo (Either a b) (Either a b)Defined in isomorphism-class-0.1.0.12 · IsomorphismClass