packages feed

coco-1.0.0.0: Coco/Laws.hs

{-# LANGUAGE UndecidableInstances #-}
module Coco.Laws where
import Data.Vector (Vector)
import qualified Data.ByteString.Lazy as B
import qualified Data.ByteString as BS
import qualified Data.Text.Lazy as T
import qualified Data.Text as TS
import Coco

-- | > id @a = to . to @b
class (To b a, To a b) => Is b a

class (Is b a, Is a b) => Iso b a
instance (Is b a, Is a b) => Iso b a

instance Is String T.Text
instance Is String TS.Text

instance Is B.ByteString BS.ByteString
instance Is BS.ByteString B.ByteString

instance Is T.Text TS.Text
instance Is TS.Text T.Text

instance Is b a => Is [b] (Vector a)
instance Is b a => Is (Vector b) [a]