mono-traversable-instances (empty) → 0.1.0.0
raw patch · 6 files changed
+202/−0 lines, 6 filesdep +basedep +comonaddep +containerssetup-changed
Dependencies added: base, comonad, containers, dlist, dlist-instances, mono-traversable, semigroupoids, semigroups, transformers, vector-instances
Files
- ChangeLog.md +3/−0
- LICENSE +20/−0
- README.md +5/−0
- Setup.hs +2/−0
- mono-traversable-instances.cabal +32/−0
- src/Data/MonoTraversable/Instances.hs +140/−0
+ ChangeLog.md view
@@ -0,0 +1,3 @@+## 0.1.0.0++* Initial release
+ LICENSE view
@@ -0,0 +1,20 @@+Copyright (c) 2016 Michael Snoyman, http://www.fpcomplete.com/++Permission is hereby granted, free of charge, to any person obtaining+a copy of this software and associated documentation files (the+"Software"), to deal in the Software without restriction, including+without limitation the rights to use, copy, modify, merge, publish,+distribute, sublicense, and/or sell copies of the Software, and to+permit persons to whom the Software is furnished to do so, subject to+the following conditions:++The above copyright notice and this permission notice shall be+included in all copies or substantial portions of the Software.++THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ README.md view
@@ -0,0 +1,5 @@+## mono-traversable-instances++Extra typeclass instances for mono-traversable++Set up this way to allow mono-traversable itself to have minimal dependencies
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
+ mono-traversable-instances.cabal view
@@ -0,0 +1,32 @@+name: mono-traversable-instances+version: 0.1.0.0+synopsis: Extra typeclass instances for mono-traversable+description: Please see README.md+homepage: https://github.com/snoyberg/mono-traversable#readme+license: MIT+license-file: LICENSE+author: Michael Snoyman+maintainer: michael@fpcomplete.com+category: Data+build-type: Simple+extra-source-files: README.md ChangeLog.md+cabal-version: >=1.10++library+ hs-source-dirs: src+ exposed-modules: Data.MonoTraversable.Instances+ build-depends: base >= 4.7 && < 5+ , mono-traversable >= 1.0 && < 1.1+ , semigroupoids >=3.0+ , comonad >= 3.0.3+ , vector-instances+ , dlist >= 0.6 && < 1.0+ , dlist-instances == 0.1.*+ , transformers+ , semigroups+ , containers+ default-language: Haskell2010++source-repository head+ type: git+ location: https://github.com/snoyberg/mono-traversable
+ src/Data/MonoTraversable/Instances.hs view
@@ -0,0 +1,140 @@+{-# LANGUAGE CPP #-}+{-# LANGUAGE TypeFamilies #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}+module Data.MonoTraversable.Instances () where++import Data.DList.Instances ()+import Data.Traversable.Instances ()+import Data.Functor.Apply (MaybeApply (..), WrappedApplicative)+import Control.Comonad (Cokleisli, Comonad, extract, extend)+import Control.Comonad.Store (StoreT)+import Control.Comonad.Env (EnvT)+import Control.Comonad.Traced (TracedT)+import Data.DList (DList)+import Data.Semigroupoid.Static (Static)+import qualified Data.DList as DL+import Data.Vector.Instances ()+import Data.MonoTraversable+import Data.Sequences+#if !MIN_VERSION_base(4,8,0)+import Control.Monad (liftM)+#endif+import Control.Monad.Trans.Identity (IdentityT)+import Data.Semigroup (Arg)+import Data.List.NonEmpty (NonEmpty)+import Data.Functor.Identity (Identity)+import Data.Tree (Tree)+import Data.Traversable (traverse)+import Control.Applicative (Applicative)+import Data.Monoid (Monoid)++#if !MIN_VERSION_comonad(5,0,0)+import Data.Functor.Coproduct (Coproduct)+#endif++type instance Element (DList a) = a+instance MonoFoldable (DList a) where+ otoList = DL.toList+ headEx = DL.head+ {-# INLINE otoList #-}+ {-# INLINE headEx #-}+instance MonoTraversable (DList a) where+ otraverse f = fmap DL.fromList . Data.Traversable.traverse f . DL.toList+#if !MIN_VERSION_base(4,8,0)+ omapM f = liftM DL.fromList . mapM f . DL.toList+#endif+instance MonoFunctor (DList a)+instance MonoPointed (DList a)+instance GrowingAppend (DList a)++instance SemiSequence (DList a) where+ type Index (DList a) = Int+ cons = DL.cons+ snoc = DL.snoc++ reverse = defaultReverse+ sortBy = defaultSortBy+ intersperse = defaultIntersperse+ find = defaultFind+ {-# INLINE intersperse #-}+ {-# INLINE reverse #-}+ {-# INLINE find #-}+ {-# INLINE sortBy #-}+ {-# INLINE cons #-}+ {-# INLINE snoc #-}++instance IsSequence (DList a) where+ fromList = DL.fromList+ replicate = DL.replicate+ tailEx = DL.tail+ {-# INLINE fromList #-}+ {-# INLINE replicate #-}+ {-# INLINE tailEx #-}++type instance Element (Cokleisli w a b) = b+instance MonoFunctor (Cokleisli w a b)+instance MonoPointed (Cokleisli w a b)++type instance Element (WrappedApplicative f a) = a+instance Control.Applicative.Applicative f => MonoPointed (WrappedApplicative f a)+instance Functor f => MonoFunctor (WrappedApplicative f a)++type instance Element (MaybeApply f a) = a+instance Functor f => MonoFunctor (MaybeApply f a)+instance MonoPointed (MaybeApply f a) where+ opoint = MaybeApply . Right+ {-# INLINE opoint #-}++type instance Element (TracedT m w a) = a+instance (Comonad w, Data.Monoid.Monoid m) => MonoComonad (TracedT m w a) where+ oextract = extract+ oextend = extend+instance Functor w => MonoFunctor (TracedT m w a)++type instance Element (StoreT s w a) = a+instance Comonad w => MonoComonad (StoreT s w a) where+ oextract = extract+ oextend = extend+instance Functor w => MonoFunctor (StoreT s w a)++type instance Element (EnvT e w a) = a+instance Comonad w => MonoComonad (EnvT e w a) where+ oextract = extract+ oextend = extend+instance Functor w => MonoFunctor (EnvT e w a)++#if !MIN_VERSION_comonad(5,0,0)+type instance Element (Coproduct f g a) = a+instance (Functor f, Functor g) => MonoFunctor (Coproduct f g a)+instance (Comonad f, Comonad g) => MonoComonad (Coproduct f g a) where+ oextract = extract+ oextend = extend+#endif++type instance Element (Static f a b) = b+instance Applicative f => MonoPointed (Static f a b)+instance Functor f => MonoFunctor (Static f a b)++instance Comonad w => MonoComonad (IdentityT w a) where+ oextract = extract+ oextend = extend++-- Comonad+instance MonoComonad (Tree a) where+ oextract = extract+ oextend = extend+instance MonoComonad (NonEmpty a) where+ oextract = extract+ oextend = extend+instance MonoComonad (Identity a) where+ oextract = extract+ oextend = extend+instance Monoid m => MonoComonad (m -> a) where+ oextract = extract+ oextend = extend+instance MonoComonad (e, a) where+ oextract = extract+ oextend = extend+instance MonoComonad (Arg a b) where+ oextract = extract+ oextend = extend