Inject instances for Data.Set, Data.Sequence (#113)

This commit is contained in:
bosu 2017-08-28 18:58:46 +03:00 committed by Gabriel Gonzalez
parent a03de76a41
commit 9e0ab9a755

View File

@ -72,7 +72,10 @@ import Text.Trifecta.Delta (Delta(..))
import qualified Control.Exception
import qualified Data.ByteString.Lazy
import qualified Data.Foldable
import qualified Data.Map
import qualified Data.Sequence
import qualified Data.Set
import qualified Data.Text
import qualified Data.Text.Lazy
import qualified Data.Text.Lazy.Builder
@ -781,6 +784,14 @@ instance Inject a => Inject (Vector a) where
instance Inject a => Inject [a] where
injectWith = fmap (contramap Data.Vector.fromList) injectWith
instance Inject a => Inject (Data.Set.Set a) where
injectWith = fmap (contramap go) injectWith where
go se = Data.Vector.fromListN (Data.Set.size se) (Data.Foldable.toList se)
instance Inject a => Inject (Data.Sequence.Seq a) where
injectWith = fmap (contramap go) injectWith where
go se = Data.Vector.fromListN (Data.Sequence.length se) (Data.Foldable.toList se)
deriving instance (Inject a, Inject b) => Inject (a, b)
{-| This is the underlying class that powers the `Interpret` class's support