{-# OPTIONS_GHC -Wno-orphans #-}
module Generics.Diff.Special.Seq () where
import Data.Foldable (toList)
import Data.Function (on)
import Data.Sequence (Seq)
import Generics.Diff
import Generics.Diff.Render
import Generics.Diff.Special
instance (Diff a) => SpecialDiff (Seq a) where
type SpecialDiffError (Seq a) = ListDiffError a
specialDiff :: Seq a -> Seq a -> Maybe (SpecialDiffError (Seq a))
specialDiff = (a -> a -> DiffResult a) -> [a] -> [a] -> Maybe (ListDiffError a)
forall a.
(a -> a -> DiffResult a) -> [a] -> [a] -> Maybe (ListDiffError a)
diffListWith a -> a -> DiffResult a
forall a. Diff a => a -> a -> DiffResult a
diff ([a] -> [a] -> Maybe (ListDiffError a))
-> (Seq a -> [a]) -> Seq a -> Seq a -> Maybe (ListDiffError a)
forall b c a. (b -> b -> c) -> (a -> b) -> a -> a -> c
`on` Seq a -> [a]
forall a. Seq a -> [a]
forall (t :: * -> *) a. Foldable t => t a -> [a]
toList
renderSpecialDiffError :: SpecialDiffError (Seq a) -> Doc
renderSpecialDiffError = Builder -> ListDiffError a -> Doc
forall a. Builder -> ListDiffError a -> Doc
listDiffErrorDoc Builder
"sequence"
instance (Diff a) => Diff (Seq a) where
diff :: Seq a -> Seq a -> DiffResult (Seq a)
diff = Seq a -> Seq a -> DiffResult (Seq a)
forall a. SpecialDiff a => a -> a -> DiffResult a
diffWithSpecial