packages feed

lawful-conversions 0.3.1 → 0.4.0

raw patch · 28 files changed

+26/−441 lines, 28 filesdep −timedep −uuid-typesPVP ok

version bump matches the API change (PVP)

Dependencies removed: time, uuid-types

API changes (from Hackage documentation)

+ LawfulConversions: tryFrom :: IsSome a b => e -> a -> Either e b
+ LawfulConversions: tryTo :: forall b a e. IsSome a b => e -> a -> Either e b

Files

CHANGELOG.md view
@@ -1,3 +1,10 @@+# v0.4++## Breaking++- Removed interpretation-based relations: UTF-8, ISO-8601, and UUID. +  - Relations that depend on a specific encoding or format choice violate the library's principle of unambiguous structural conversion — there is no single canonical way to encode Text as bytes or render a UTCTime as a string.+ # v0.3  ## Breaking
lawful-conversions.cabal view
@@ -1,6 +1,6 @@ cabal-version: 3.0 name: lawful-conversions-version: 0.3.1+version: 0.4.0 synopsis: Lawful typeclasses for bidirectional conversion between types category: Conversion homepage: https://github.com/nikita-volkov/lawful-conversions@@ -103,17 +103,9 @@     LawfulConversions.Relations.ByteArrayAndWord8List     LawfulConversions.Relations.ByteStringAndLazyByteString     LawfulConversions.Relations.ByteStringAndLazyByteStringBuilder-    LawfulConversions.Relations.ByteStringAndLazyText     LawfulConversions.Relations.ByteStringAndShortByteString-    LawfulConversions.Relations.ByteStringAndString-    LawfulConversions.Relations.ByteStringAndText     LawfulConversions.Relations.ByteStringAndTextArray     LawfulConversions.Relations.ByteStringAndWord8List-    LawfulConversions.Relations.DayAndLazyText-    LawfulConversions.Relations.DayAndLazyTextBuilder-    LawfulConversions.Relations.DayAndStrictTextBuilder-    LawfulConversions.Relations.DayAndString-    LawfulConversions.Relations.DayAndText     LawfulConversions.Relations.Int16AndWord16     LawfulConversions.Relations.Int32AndWord32     LawfulConversions.Relations.Int64AndWord64@@ -122,10 +114,7 @@     LawfulConversions.Relations.IntMapAndMapOfInt     LawfulConversions.Relations.IntSetAndSetOfInt     LawfulConversions.Relations.LazyByteStringAndLazyByteStringBuilder-    LawfulConversions.Relations.LazyByteStringAndLazyText     LawfulConversions.Relations.LazyByteStringAndShortByteString-    LawfulConversions.Relations.LazyByteStringAndString-    LawfulConversions.Relations.LazyByteStringAndText     LawfulConversions.Relations.LazyByteStringAndTextArray     LawfulConversions.Relations.LazyByteStringAndWord8List     LawfulConversions.Relations.LazyByteStringBuilderAndShortByteString@@ -135,25 +124,15 @@     LawfulConversions.Relations.LazyTextAndStrictTextBuilder     LawfulConversions.Relations.LazyTextAndString     LawfulConversions.Relations.LazyTextAndText-    LawfulConversions.Relations.LazyTextAndUtcTime-    LawfulConversions.Relations.LazyTextAndUuid     LawfulConversions.Relations.LazyTextBuilderAndStrictTextBuilder     LawfulConversions.Relations.LazyTextBuilderAndString     LawfulConversions.Relations.LazyTextBuilderAndText-    LawfulConversions.Relations.LazyTextBuilderAndUtcTime-    LawfulConversions.Relations.LazyTextBuilderAndUuid     LawfulConversions.Relations.ListAndSeq     LawfulConversions.Relations.ShortByteStringAndTextArray     LawfulConversions.Relations.ShortByteStringAndWord8List     LawfulConversions.Relations.StrictTextBuilderAndString     LawfulConversions.Relations.StrictTextBuilderAndText-    LawfulConversions.Relations.StrictTextBuilderAndUtcTime-    LawfulConversions.Relations.StrictTextBuilderAndUuid     LawfulConversions.Relations.StringAndText-    LawfulConversions.Relations.StringAndUtcTime-    LawfulConversions.Relations.StringAndUuid-    LawfulConversions.Relations.TextAndUtcTime-    LawfulConversions.Relations.TextAndUuid     LawfulConversions.Relations.TextArrayAndWord8List     LawfulConversions.Relations.Void     LawfulConversions.TextCompat.Array@@ -167,9 +146,7 @@     primitive >=0.7 && <0.10,     profunctors >=5 && <6,     text >=1.2 && <2.2,-    time >=1.9 && <2,     unordered-containers >=0.2 && <0.3,-    uuid-types >=1.0 && <1.1,     vector >=0.12 && <0.14,  test-suite test
src/library/LawfulConversions.hs view
@@ -83,6 +83,8 @@     -- * Combinators     from,     maybeTo,+    tryFrom,+    tryTo,     onto,      -- * Optics
src/library/LawfulConversions/Algebra.hs view
@@ -79,6 +79,21 @@ maybeTo = maybeFrom  -- |+-- Like 'maybeFrom', but returns an 'Either' with the provided error on failure.+--+-- Useful for raising custom errors when conversion fails.+tryFrom :: (IsSome a b) => e -> a -> Either e b+tryFrom err a =+  case maybeFrom a of+    Just b -> Right b+    Nothing -> Left err++-- |+-- Alias to 'tryFrom', which lets you specify the target type of the conversion first using @TypeApplications@.+tryTo :: forall b a e. (IsSome a b) => e -> a -> Either e b+tryTo = tryFrom++-- | -- Lossy or canonicalizing conversion. -- Captures mappings from multiple alternative inputs into one output. --
src/library/LawfulConversions/Prelude.hs view
@@ -55,7 +55,6 @@ import Data.Text as Exports (Text) import Data.Traversable as Exports import Data.Tuple as Exports-import Data.UUID.Types as Exports (UUID) import Data.Vector as Exports (Vector) import Data.Version as Exports import Data.Void as Exports
src/library/LawfulConversions/Relations.hs view
@@ -11,17 +11,9 @@ import LawfulConversions.Relations.ByteArrayAndWord8List () import LawfulConversions.Relations.ByteStringAndLazyByteString () import LawfulConversions.Relations.ByteStringAndLazyByteStringBuilder ()-import LawfulConversions.Relations.ByteStringAndLazyText () import LawfulConversions.Relations.ByteStringAndShortByteString ()-import LawfulConversions.Relations.ByteStringAndString ()-import LawfulConversions.Relations.ByteStringAndText () import LawfulConversions.Relations.ByteStringAndTextArray () import LawfulConversions.Relations.ByteStringAndWord8List ()-import LawfulConversions.Relations.DayAndLazyText ()-import LawfulConversions.Relations.DayAndLazyTextBuilder ()-import LawfulConversions.Relations.DayAndStrictTextBuilder ()-import LawfulConversions.Relations.DayAndString ()-import LawfulConversions.Relations.DayAndText () import LawfulConversions.Relations.Int16AndWord16 () import LawfulConversions.Relations.Int32AndWord32 () import LawfulConversions.Relations.Int64AndWord64 ()@@ -30,10 +22,7 @@ import LawfulConversions.Relations.IntMapAndMapOfInt () import LawfulConversions.Relations.IntSetAndSetOfInt () import LawfulConversions.Relations.LazyByteStringAndLazyByteStringBuilder ()-import LawfulConversions.Relations.LazyByteStringAndLazyText () import LawfulConversions.Relations.LazyByteStringAndShortByteString ()-import LawfulConversions.Relations.LazyByteStringAndString ()-import LawfulConversions.Relations.LazyByteStringAndText () import LawfulConversions.Relations.LazyByteStringAndTextArray () import LawfulConversions.Relations.LazyByteStringAndWord8List () import LawfulConversions.Relations.LazyByteStringBuilderAndShortByteString ()@@ -43,24 +32,14 @@ import LawfulConversions.Relations.LazyTextAndStrictTextBuilder () import LawfulConversions.Relations.LazyTextAndString () import LawfulConversions.Relations.LazyTextAndText ()-import LawfulConversions.Relations.LazyTextAndUtcTime ()-import LawfulConversions.Relations.LazyTextAndUuid () import LawfulConversions.Relations.LazyTextBuilderAndStrictTextBuilder () import LawfulConversions.Relations.LazyTextBuilderAndString () import LawfulConversions.Relations.LazyTextBuilderAndText ()-import LawfulConversions.Relations.LazyTextBuilderAndUtcTime ()-import LawfulConversions.Relations.LazyTextBuilderAndUuid () import LawfulConversions.Relations.ListAndSeq () import LawfulConversions.Relations.ShortByteStringAndTextArray () import LawfulConversions.Relations.ShortByteStringAndWord8List () import LawfulConversions.Relations.StrictTextBuilderAndString () import LawfulConversions.Relations.StrictTextBuilderAndText ()-import LawfulConversions.Relations.StrictTextBuilderAndUtcTime ()-import LawfulConversions.Relations.StrictTextBuilderAndUuid () import LawfulConversions.Relations.StringAndText ()-import LawfulConversions.Relations.StringAndUtcTime ()-import LawfulConversions.Relations.StringAndUuid ()-import LawfulConversions.Relations.TextAndUtcTime ()-import LawfulConversions.Relations.TextAndUuid () import LawfulConversions.Relations.TextArrayAndWord8List () import LawfulConversions.Relations.Void ()
− src/library/LawfulConversions/Relations/ByteStringAndLazyText.hs
@@ -1,19 +0,0 @@-{-# OPTIONS_GHC -Wno-orphans #-}--module LawfulConversions.Relations.ByteStringAndLazyText where--import qualified Data.ByteString.Lazy-import qualified Data.Text.Encoding.Error-import qualified Data.Text.Lazy-import qualified Data.Text.Lazy.Encoding-import LawfulConversions.Algebra-import LawfulConversions.Prelude---- | UTF-8 codec.-instance IsSome ByteString Data.Text.Lazy.Text where-  to = Data.ByteString.Lazy.toStrict . Data.Text.Lazy.Encoding.encodeUtf8-  maybeFrom = either (const Nothing) Just . Data.Text.Lazy.Encoding.decodeUtf8' . Data.ByteString.Lazy.fromStrict---- | Lenient UTF-8 decoding.-instance IsMany ByteString Data.Text.Lazy.Text where-  onfrom = Data.Text.Lazy.Encoding.decodeUtf8With Data.Text.Encoding.Error.lenientDecode . Data.ByteString.Lazy.fromStrict
− src/library/LawfulConversions/Relations/ByteStringAndString.hs
@@ -1,18 +0,0 @@-{-# OPTIONS_GHC -Wno-orphans #-}--module LawfulConversions.Relations.ByteStringAndString where--import qualified Data.Text-import qualified Data.Text.Encoding-import qualified Data.Text.Encoding.Error-import LawfulConversions.Algebra-import LawfulConversions.Prelude---- | UTF-8 codec.-instance IsSome ByteString String where-  to = Data.Text.Encoding.encodeUtf8 . Data.Text.pack-  maybeFrom = either (const Nothing) (Just . Data.Text.unpack) . Data.Text.Encoding.decodeUtf8'---- | Lenient UTF-8 decoding.-instance IsMany ByteString String where-  onfrom = Data.Text.unpack . Data.Text.Encoding.decodeUtf8With Data.Text.Encoding.Error.lenientDecode
− src/library/LawfulConversions/Relations/ByteStringAndText.hs
@@ -1,17 +0,0 @@-{-# OPTIONS_GHC -Wno-orphans #-}--module LawfulConversions.Relations.ByteStringAndText where--import qualified Data.Text.Encoding-import qualified Data.Text.Encoding.Error-import LawfulConversions.Algebra-import LawfulConversions.Prelude---- | UTF-8 codec.-instance IsSome ByteString Text where-  to = Data.Text.Encoding.encodeUtf8-  maybeFrom = either (const Nothing) Just . Data.Text.Encoding.decodeUtf8'---- | Lenient UTF-8 decoding.-instance IsMany ByteString Text where-  onfrom = Data.Text.Encoding.decodeUtf8With Data.Text.Encoding.Error.lenientDecode
− src/library/LawfulConversions/Relations/DayAndLazyText.hs
@@ -1,15 +0,0 @@-{-# OPTIONS_GHC -Wno-orphans #-}--module LawfulConversions.Relations.DayAndLazyText where--import qualified Data.Text.Lazy-import Data.Time-import LawfulConversions.Algebra-import LawfulConversions.Prelude-import LawfulConversions.Relations.DayAndString ()-import LawfulConversions.Relations.LazyTextAndString ()---- | Implements ISO-8601.-instance IsSome Data.Text.Lazy.Text Day where-  to = fromString . to-  maybeFrom = maybeFrom @String . to
− src/library/LawfulConversions/Relations/DayAndLazyTextBuilder.hs
@@ -1,15 +0,0 @@-{-# OPTIONS_GHC -Wno-orphans #-}--module LawfulConversions.Relations.DayAndLazyTextBuilder where--import qualified Data.Text.Lazy.Builder-import Data.Time-import LawfulConversions.Algebra-import LawfulConversions.Prelude-import LawfulConversions.Relations.DayAndString ()-import LawfulConversions.Relations.LazyTextBuilderAndString ()---- | Implements ISO-8601.-instance IsSome Data.Text.Lazy.Builder.Builder Day where-  to = fromString . to-  maybeFrom = maybeFrom @String . to
− src/library/LawfulConversions/Relations/DayAndStrictTextBuilder.hs
@@ -1,36 +0,0 @@-{-# LANGUAGE CPP #-}-{-# OPTIONS_GHC -Wno-orphans #-}--module LawfulConversions.Relations.DayAndStrictTextBuilder where--#if MIN_VERSION_text(2,1,2)--import qualified Data.Text.Encoding-import Data.Time-import LawfulConversions.Algebra-import LawfulConversions.Prelude-import LawfulConversions.Relations.StrictTextBuilderAndString ()-import LawfulConversions.Relations.StringAndText ()-import LawfulConversions.Relations.DayAndString ()---- | Implements ISO-8601.-instance IsSome Data.Text.Encoding.StrictTextBuilder Day where-  to = onfrom . to @String-  maybeFrom = maybeFrom @String . to--#elif MIN_VERSION_text(2,0,2)--import qualified Data.Text.Encoding-import Data.Time-import LawfulConversions.Algebra-import LawfulConversions.Prelude-import LawfulConversions.Relations.StrictTextBuilderAndString ()-import LawfulConversions.Relations.StringAndText ()-import LawfulConversions.Relations.DayAndString ()---- | Implements ISO-8601.-instance IsSome Data.Text.Encoding.StrictBuilder Day where-  to = onfrom . to @String-  maybeFrom = maybeFrom @String . to--#endif
− src/library/LawfulConversions/Relations/DayAndString.hs
@@ -1,13 +0,0 @@-{-# OPTIONS_GHC -Wno-orphans #-}--module LawfulConversions.Relations.DayAndString where--import Data.Time-import Data.Time.Format.ISO8601-import LawfulConversions.Algebra-import LawfulConversions.Prelude---- | Implements ISO-8601.-instance IsSome String Day where-  to = iso8601Show-  maybeFrom = iso8601ParseM
− src/library/LawfulConversions/Relations/DayAndText.hs
@@ -1,14 +0,0 @@-{-# OPTIONS_GHC -Wno-orphans #-}--module LawfulConversions.Relations.DayAndText where--import Data.Time-import LawfulConversions.Algebra-import LawfulConversions.Prelude-import LawfulConversions.Relations.DayAndString ()-import LawfulConversions.Relations.StringAndText ()---- | Implements ISO-8601.-instance IsSome Text Day where-  to = fromString . to-  maybeFrom = maybeFrom @String . to
− src/library/LawfulConversions/Relations/LazyByteStringAndLazyText.hs
@@ -1,19 +0,0 @@-{-# OPTIONS_GHC -Wno-orphans #-}--module LawfulConversions.Relations.LazyByteStringAndLazyText where--import qualified Data.ByteString.Lazy-import qualified Data.Text.Encoding.Error-import qualified Data.Text.Lazy-import qualified Data.Text.Lazy.Encoding-import LawfulConversions.Algebra-import LawfulConversions.Prelude---- | UTF-8 codec.-instance IsSome Data.ByteString.Lazy.ByteString Data.Text.Lazy.Text where-  to = Data.Text.Lazy.Encoding.encodeUtf8-  maybeFrom = either (const Nothing) Just . Data.Text.Lazy.Encoding.decodeUtf8'---- | Lenient UTF-8 decoding.-instance IsMany Data.ByteString.Lazy.ByteString Data.Text.Lazy.Text where-  onfrom = Data.Text.Lazy.Encoding.decodeUtf8With Data.Text.Encoding.Error.lenientDecode
− src/library/LawfulConversions/Relations/LazyByteStringAndString.hs
@@ -1,19 +0,0 @@-{-# OPTIONS_GHC -Wno-orphans #-}--module LawfulConversions.Relations.LazyByteStringAndString where--import qualified Data.ByteString.Lazy-import qualified Data.Text.Encoding.Error-import qualified Data.Text.Lazy-import qualified Data.Text.Lazy.Encoding-import LawfulConversions.Algebra-import LawfulConversions.Prelude---- | UTF-8 codec.-instance IsSome Data.ByteString.Lazy.ByteString String where-  to = Data.Text.Lazy.Encoding.encodeUtf8 . Data.Text.Lazy.pack-  maybeFrom = either (const Nothing) (Just . Data.Text.Lazy.unpack) . Data.Text.Lazy.Encoding.decodeUtf8'---- | Lenient UTF-8 decoding.-instance IsMany Data.ByteString.Lazy.ByteString String where-  onfrom = Data.Text.Lazy.unpack . Data.Text.Lazy.Encoding.decodeUtf8With Data.Text.Encoding.Error.lenientDecode
− src/library/LawfulConversions/Relations/LazyByteStringAndText.hs
@@ -1,20 +0,0 @@-{-# OPTIONS_GHC -Wno-orphans #-}--module LawfulConversions.Relations.LazyByteStringAndText where--import qualified Data.ByteString.Lazy-import qualified Data.Text-import qualified Data.Text.Encoding.Error-import qualified Data.Text.Lazy-import qualified Data.Text.Lazy.Encoding-import LawfulConversions.Algebra-import LawfulConversions.Prelude---- | UTF-8 codec.-instance IsSome Data.ByteString.Lazy.ByteString Data.Text.Text where-  to = Data.Text.Lazy.Encoding.encodeUtf8 . Data.Text.Lazy.fromStrict-  maybeFrom = either (const Nothing) (Just . Data.Text.Lazy.toStrict) . Data.Text.Lazy.Encoding.decodeUtf8'---- | Lenient UTF-8 decoding.-instance IsMany Data.ByteString.Lazy.ByteString Data.Text.Text where-  onfrom = Data.Text.Lazy.toStrict . Data.Text.Lazy.Encoding.decodeUtf8With Data.Text.Encoding.Error.lenientDecode
− src/library/LawfulConversions/Relations/LazyTextAndUtcTime.hs
@@ -1,15 +0,0 @@-{-# OPTIONS_GHC -Wno-orphans #-}--module LawfulConversions.Relations.LazyTextAndUtcTime where--import qualified Data.Text.Lazy-import Data.Time-import LawfulConversions.Algebra-import LawfulConversions.Prelude-import LawfulConversions.Relations.LazyTextAndString ()-import LawfulConversions.Relations.StringAndUtcTime ()---- | Implements ISO-8601.-instance IsSome Data.Text.Lazy.Text UTCTime where-  to = fromString . to-  maybeFrom = maybeFrom @String . to
− src/library/LawfulConversions/Relations/LazyTextAndUuid.hs
@@ -1,12 +0,0 @@-{-# OPTIONS_GHC -Wno-orphans #-}--module LawfulConversions.Relations.LazyTextAndUuid where--import qualified Data.Text.Lazy-import qualified Data.UUID.Types-import LawfulConversions.Algebra-import LawfulConversions.Prelude--instance IsSome Data.Text.Lazy.Text UUID where-  to = Data.Text.Lazy.fromStrict . Data.UUID.Types.toText-  maybeFrom = Data.UUID.Types.fromText . Data.Text.Lazy.toStrict
− src/library/LawfulConversions/Relations/LazyTextBuilderAndUtcTime.hs
@@ -1,15 +0,0 @@-{-# OPTIONS_GHC -Wno-orphans #-}--module LawfulConversions.Relations.LazyTextBuilderAndUtcTime where--import qualified Data.Text.Lazy.Builder-import Data.Time-import LawfulConversions.Algebra-import LawfulConversions.Prelude-import LawfulConversions.Relations.LazyTextBuilderAndString ()-import LawfulConversions.Relations.StringAndUtcTime ()---- | Implements ISO-8601.-instance IsSome Data.Text.Lazy.Builder.Builder UTCTime where-  to = fromString . to-  maybeFrom = maybeFrom @String . to
− src/library/LawfulConversions/Relations/LazyTextBuilderAndUuid.hs
@@ -1,13 +0,0 @@-{-# OPTIONS_GHC -Wno-orphans #-}--module LawfulConversions.Relations.LazyTextBuilderAndUuid where--import qualified Data.Text.Lazy-import qualified Data.Text.Lazy.Builder-import qualified Data.UUID.Types-import LawfulConversions.Algebra-import LawfulConversions.Prelude--instance IsSome Data.Text.Lazy.Builder.Builder UUID where-  to = Data.Text.Lazy.Builder.fromText . Data.UUID.Types.toText-  maybeFrom = Data.UUID.Types.fromText . Data.Text.Lazy.toStrict . Data.Text.Lazy.Builder.toLazyText
− src/library/LawfulConversions/Relations/StrictTextBuilderAndUtcTime.hs
@@ -1,36 +0,0 @@-{-# LANGUAGE CPP #-}-{-# OPTIONS_GHC -Wno-orphans #-}--module LawfulConversions.Relations.StrictTextBuilderAndUtcTime where--#if MIN_VERSION_text(2,1,2)--import qualified Data.Text.Encoding-import Data.Time-import LawfulConversions.Algebra-import LawfulConversions.Prelude-import LawfulConversions.Relations.StrictTextBuilderAndString ()-import LawfulConversions.Relations.StringAndText ()-import LawfulConversions.Relations.StringAndUtcTime ()---- | Implements ISO-8601.-instance IsSome Data.Text.Encoding.StrictTextBuilder UTCTime where-  to = onfrom . to @String-  maybeFrom = maybeFrom @String . to--#elif MIN_VERSION_text(2,0,2)--import qualified Data.Text.Encoding-import Data.Time-import LawfulConversions.Algebra-import LawfulConversions.Prelude-import LawfulConversions.Relations.StrictTextBuilderAndString ()-import LawfulConversions.Relations.StringAndText ()-import LawfulConversions.Relations.StringAndUtcTime ()---- | Implements ISO-8601.-instance IsSome Data.Text.Encoding.StrictBuilder UTCTime where-  to = onfrom . to @String-  maybeFrom = maybeFrom @String . to--#endif
− src/library/LawfulConversions/Relations/StrictTextBuilderAndUuid.hs
@@ -1,28 +0,0 @@-{-# LANGUAGE CPP #-}-{-# OPTIONS_GHC -Wno-orphans #-}--module LawfulConversions.Relations.StrictTextBuilderAndUuid where--#if MIN_VERSION_text(2,1,2)--import qualified Data.UUID.Types-import qualified Data.Text.Encoding-import LawfulConversions.Algebra-import LawfulConversions.Prelude--instance IsSome Data.Text.Encoding.StrictTextBuilder UUID where-  to = Data.Text.Encoding.textToStrictBuilder . Data.UUID.Types.toText-  maybeFrom = Data.UUID.Types.fromText . Data.Text.Encoding.strictBuilderToText--#elif MIN_VERSION_text(2,0,2)--import qualified Data.UUID.Types-import qualified Data.Text.Encoding-import LawfulConversions.Algebra-import LawfulConversions.Prelude--instance IsSome Data.Text.Encoding.StrictBuilder UUID where-  to = Data.Text.Encoding.textToStrictBuilder . Data.UUID.Types.toText-  maybeFrom = Data.UUID.Types.fromText . Data.Text.Encoding.strictBuilderToText--#endif
− src/library/LawfulConversions/Relations/StringAndUtcTime.hs
@@ -1,13 +0,0 @@-{-# OPTIONS_GHC -Wno-orphans #-}--module LawfulConversions.Relations.StringAndUtcTime where--import Data.Time-import Data.Time.Format.ISO8601-import LawfulConversions.Algebra-import LawfulConversions.Prelude---- | Implements ISO-8601.-instance IsSome String UTCTime where-  to = iso8601Show-  maybeFrom = iso8601ParseM
− src/library/LawfulConversions/Relations/StringAndUuid.hs
@@ -1,11 +0,0 @@-{-# OPTIONS_GHC -Wno-orphans #-}--module LawfulConversions.Relations.StringAndUuid where--import qualified Data.UUID.Types-import LawfulConversions.Algebra-import LawfulConversions.Prelude--instance IsSome String UUID where-  to = Data.UUID.Types.toString-  maybeFrom = Data.UUID.Types.fromString
− src/library/LawfulConversions/Relations/TextAndUtcTime.hs
@@ -1,14 +0,0 @@-{-# OPTIONS_GHC -Wno-orphans #-}--module LawfulConversions.Relations.TextAndUtcTime where--import Data.Time-import LawfulConversions.Algebra-import LawfulConversions.Prelude-import LawfulConversions.Relations.StringAndText ()-import LawfulConversions.Relations.StringAndUtcTime ()---- | Implements ISO-8601.-instance IsSome Text UTCTime where-  to = fromString . to-  maybeFrom = maybeFrom @String . to
− src/library/LawfulConversions/Relations/TextAndUuid.hs
@@ -1,11 +0,0 @@-{-# OPTIONS_GHC -Wno-orphans #-}--module LawfulConversions.Relations.TextAndUuid where--import qualified Data.UUID.Types as Uuid-import LawfulConversions.Algebra-import LawfulConversions.Prelude--instance IsSome Text UUID where-  to = Uuid.toText-  maybeFrom = Uuid.fromText
src/test/Main.hs view
@@ -110,33 +110,12 @@       testIs @Word64 @Int64 Proxy Proxy,       testIs @Word64 @Word64 Proxy Proxy,       testIs @Word8 @Int8 Proxy Proxy,-      testIs @Word8 @Word8 Proxy Proxy,-      testIsSome @Data.Text.Lazy.Text @UTCTime Proxy Proxy,-      testIsSome @Data.Text.Lazy.Builder.Builder @UTCTime Proxy Proxy,-      testIsSome @String @UTCTime Proxy Proxy,-      testIsSome @Text @UTCTime Proxy Proxy,-      testIsSome @Data.Text.Lazy.Text @Day Proxy Proxy,-      testIsSome @Data.Text.Lazy.Builder.Builder @Day Proxy Proxy,-      testIsSome @String @Day Proxy Proxy,-      testIsSome @Text @Day Proxy Proxy+      testIs @Word8 @Word8 Proxy Proxy     ]  testIs :: (Is a b, Eq a, Eq b, Arbitrary a, Show a, Arbitrary b, Show b, Typeable a, Typeable b) => Proxy a -> Proxy b -> TestTree testIs superp subp =   isProperties superp subp-    & fmap (uncurry testProperty)-    & testGroup groupName-  where-    groupName =-      mconcat-        [ show (typeOf (asProxyTypeOf undefined superp)),-          "/",-          show (typeOf (asProxyTypeOf undefined subp))-        ]--testIsSome :: (IsSome a b, Eq a, Eq b, Arbitrary a, Show a, Arbitrary b, Show b, Typeable a, Typeable b) => Proxy a -> Proxy b -> TestTree-testIsSome superp subp =-  isSomeProperties superp subp     & fmap (uncurry testProperty)     & testGroup groupName   where