Hello community,

here is the log from the commit of package ghc-pointed for openSUSE:Factory 
checked in at 2016-11-24 21:20:40
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-pointed (Old)
 and      /work/SRC/openSUSE:Factory/.ghc-pointed.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "ghc-pointed"

Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-pointed/ghc-pointed.changes  2016-07-21 
08:16:46.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-pointed.new/ghc-pointed.changes     
2016-11-24 21:20:41.000000000 +0100
@@ -1,0 +2,5 @@
+Thu Sep 15 07:00:11 UTC 2016 - psim...@suse.com
+
+- Update to version 5 revision 1 with cabal2obs.
+
+-------------------------------------------------------------------

Old:
----
  pointed-4.2.0.2.tar.gz

New:
----
  pointed-5.tar.gz
  pointed.cabal

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ ghc-pointed.spec ++++++
--- /var/tmp/diff_new_pack.8leqkR/_old  2016-11-24 21:20:42.000000000 +0100
+++ /var/tmp/diff_new_pack.8leqkR/_new  2016-11-24 21:20:42.000000000 +0100
@@ -18,15 +18,15 @@
 
 %global pkg_name pointed
 Name:           ghc-%{pkg_name}
-Version:        4.2.0.2
+Version:        5
 Release:        0
 Summary:        Pointed and copointed data
 License:        BSD-2-Clause
-Group:          System/Libraries
+Group:          Development/Languages/Other
 Url:            https://hackage.haskell.org/package/%{pkg_name}
 Source0:        
https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{version}.tar.gz
+Source1:        
https://hackage.haskell.org/package/%{pkg_name}-%{version}/revision/1.cabal#/%{pkg_name}.cabal
 BuildRequires:  ghc-Cabal-devel
-# Begin cabal-rpm deps:
 BuildRequires:  ghc-comonad-devel
 BuildRequires:  ghc-containers-devel
 BuildRequires:  ghc-data-default-class-devel
@@ -41,7 +41,6 @@
 BuildRequires:  ghc-transformers-devel
 BuildRequires:  ghc-unordered-containers-devel
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
-# End cabal-rpm deps
 
 %description
 Pointed and copointed data.
@@ -59,16 +58,14 @@
 
 %prep
 %setup -q -n %{pkg_name}-%{version}
-
+cp -p %{SOURCE1} %{pkg_name}.cabal
 
 %build
 %ghc_lib_build
 
-
 %install
 %ghc_lib_install
 
-
 %post devel
 %ghc_pkg_recache
 
@@ -81,6 +78,5 @@
 
 %files devel -f %{name}-devel.files
 %defattr(-,root,root,-)
-%doc CHANGELOG.markdown README.markdown
 
 %changelog

++++++ pointed-4.2.0.2.tar.gz -> pointed-5.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pointed-4.2.0.2/CHANGELOG.markdown 
new/pointed-5/CHANGELOG.markdown
--- old/pointed-4.2.0.2/CHANGELOG.markdown      2015-05-17 14:32:46.000000000 
+0200
+++ new/pointed-5/CHANGELOG.markdown    2016-01-17 03:40:19.000000000 +0100
@@ -1,3 +1,7 @@
+4.2.1
+-----
+* Added (largely unsupported) options to build without almost all of the 
dependencies for advanced users
+
 4.2.0.2
 -------
 * Added the `CHANGELOG.markdown` to `extra-source-files`, so that `hackage` 
can display it.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pointed-4.2.0.2/README.markdown 
new/pointed-5/README.markdown
--- old/pointed-4.2.0.2/README.markdown 2015-05-17 14:32:46.000000000 +0200
+++ new/pointed-5/README.markdown       2016-01-17 03:40:19.000000000 +0100
@@ -1,7 +1,7 @@
 pointed
 =======
 
-[![Build 
Status](https://secure.travis-ci.org/ekmett/pointed.png?branch=master)](http://travis-ci.org/ekmett/pointed)
+[![Hackage](https://img.shields.io/hackage/v/pointed.svg)](https://hackage.haskell.org/package/pointed)
 [![Build 
Status](https://secure.travis-ci.org/ekmett/pointed.png?branch=master)](http://travis-ci.org/ekmett/pointed)
 
 Haskell 98 pointed and copointed data types.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pointed-4.2.0.2/pointed.cabal 
new/pointed-5/pointed.cabal
--- old/pointed-4.2.0.2/pointed.cabal   2015-05-17 14:32:46.000000000 +0200
+++ new/pointed-5/pointed.cabal 2016-01-17 03:40:19.000000000 +0100
@@ -1,6 +1,6 @@
 name:          pointed
 category:      Data
-version:       4.2.0.2
+version:       5
 license:       BSD3
 cabal-version: >= 1.6
 license-file:  LICENSE
@@ -9,7 +9,7 @@
 stability:     provisional
 homepage:      http://github.com/ekmett/pointed/
 bug-reports:   http://github.com/ekmett/pointed/issues
-copyright:     Copyright (C) 2008-2013 Edward A. Kmett
+copyright:     Copyright (C) 2008-2016 Edward A. Kmett
 synopsis:      Pointed and copointed data
 description:   Pointed and copointed data
 build-type:    Simple
@@ -22,21 +22,73 @@
   type: git
   location: git://github.com/ekmett/pointed.git
 
+flag comonad
+  description: You can disable the use of the `comonad` package using 
`-f-transformers`.
+  default: True
+  manual: True
+flag containers
+  description: You can disable the use of the `containers` package using 
`-f-containers`.
+  default: True
+  manual: True
+flag kan-extensions
+  description: You can disable the use of the `kan-extensions` package using 
`-f-kan-extensions`.
+  default: True
+  manual: True
+flag semigroupoids
+  description: You can disable the use of the `semigroupoids` package using 
`-f-semigroupoids`.
+  default: True
+  manual: True
+flag semigroups
+  description: You can disable the use of the `semigroups` package using 
`-f-semigroups`.
+  default: True
+  manual: True
+flag stm
+  description: You can disable the use of the `stm` package using `-f-stm`.
+  default: True
+  manual: True
+flag tagged
+  description: You can disable the use of the `tagged` package using 
`-f-tagged`.
+  default: True
+  manual: True
+flag transformers
+  description: You can disable the use of the `transformers` package using 
`-f-transformers`.
+  default: True
+  manual: True
+flag unordered-containers
+  description: You can disable the use of the `unordered-containers` package 
using `-f-unordered-containers`.
+  default: True
+  manual: True
+
 library
-  build-depends:
-    base                 >= 4       && < 5,
-    transformers         >= 0.2     && < 0.5,
-    transformers-compat  >= 0.3     && < 1,
-    containers           >= 0.4     && < 0.6,
-    comonad              >= 4       && < 5,
-    data-default-class   >= 0.0.1   && < 0.1,
-    hashable             >= 1.1     && < 1.3,
-    kan-extensions       >= 4.2     && < 5,
-    semigroups           >= 0.8.3.1 && < 1,
-    semigroupoids        >= 4       && < 6,
-    stm                  >= 2.1.2.1 && < 2.5,
-    tagged               >= 0.5     && < 1,
-    unordered-containers >= 0.2     && < 0.3
+  build-depends: base >= 4 && < 5,
+                 data-default-class >= 0.0.1 && < 0.1
+
+  if flag(comonad)
+    build-depends: comonad >= 5 && < 6
+
+  if flag(containers)
+    build-depends: containers >= 0.4 && < 0.6
+
+  if flag(kan-extensions)
+    build-depends: kan-extensions >= 5 && < 6
+
+  if flag(semigroupoids)
+    build-depends: semigroupoids >= 4 && < 6
+
+  if flag(semigroups)
+    build-depends: semigroups >= 0.8.3.1 && < 1
+
+  if flag(stm)
+    build-depends: stm >= 2.1.2.1 && < 2.5
+
+  if flag(tagged)
+    build-depends: tagged >= 0.5 && < 1
+
+  if flag(transformers)
+    build-depends: transformers >= 0.2 && < 0.6, transformers-compat >= 0.3 && 
< 1
+
+  if flag(unordered-containers)
+    build-depends: hashable >= 1.1 && < 1.3, unordered-containers >= 0.2 && < 
0.3
 
   exposed-modules:
     Data.Pointed
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pointed-4.2.0.2/src/Data/Copointed.hs 
new/pointed-5/src/Data/Copointed.hs
--- old/pointed-4.2.0.2/src/Data/Copointed.hs   2015-05-17 14:32:46.000000000 
+0200
+++ new/pointed-5/src/Data/Copointed.hs 2016-01-17 03:40:19.000000000 +0100
@@ -3,29 +3,62 @@
 #if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 702
 {-# LANGUAGE Safe #-}
 #endif
+
+#ifndef MIN_VERSION_base
+#define MIN_VERSION_base(x,y,z) 0
+#endif
+
 module Data.Copointed where
 
+import Control.Applicative
 import Data.Default.Class
+
+#ifdef MIN_VERSION_comonad
+import Control.Comonad.Trans.Env
+import Control.Comonad.Trans.Store
+import Control.Comonad.Trans.Traced
+
+#if !(MIN_VERSION_comonad(4,3,0))
+import Data.Functor.Coproduct
+#endif
+#endif
+
+#ifdef MIN_VERSION_containers
+import Data.Tree
+#endif
+
+#ifdef MIN_VERSION_semigroupoids
 import Data.Functor.Bind
+#endif
+
+#if defined(MIN_VERSION_semigroups) || (MIN_VERSION_base(4,9,0))
+import Data.Semigroup as Semigroup
+import Data.List.NonEmpty (NonEmpty(..))
+#else
+import Data.Monoid
+#endif
+
+#ifdef MIN_VERSION_tagged
+import Data.Tagged
+#endif
+
+#if defined(MIN_VERSION_transformers) || (MIN_VERSION_base(4,8,0))
 import Data.Functor.Identity
+#endif
+
+#if defined(MIN_VERSION_transformers) || (MIN_VERSION_base(4,9,0))
+import Data.Functor.Sum as F
 import Data.Functor.Compose
-import Data.Functor.Coproduct
+#endif
+
+#ifdef MIN_VERSION_transformers
 import Data.Functor.Reverse
-import Data.Functor.Kan.Lift as Kan
-import qualified Data.Functor.Sum as F
-import Data.Tree
-import Data.Semigroup as Semigroup
-import Control.Applicative
 import Control.Applicative.Backwards
 import Control.Applicative.Lift as Applicative
 import Control.Monad.Trans.Identity
 import qualified Control.Monad.Trans.Writer.Lazy as Lazy
 import qualified Control.Monad.Trans.Writer.Strict as Strict
-import Control.Comonad.Trans.Env
-import Control.Comonad.Trans.Store
-import Control.Comonad.Trans.Traced
-import Data.List.NonEmpty (NonEmpty(..))
-import Data.Tagged
+#endif
 
 -- | 'Copointed' does not require a 'Functor', as the only relationship
 -- between 'copoint' and 'fmap' is given by a free theorem.
@@ -33,42 +66,64 @@
 class Copointed p where
   copoint :: p a -> a
 
-instance (Copointed f, Copointed g) => Copointed (F.Sum f g) where
-  copoint (F.InL m) = copoint m
-  copoint (F.InR m) = copoint m
+instance Copointed ((,) a) where
+  copoint = snd
 
-instance Copointed (Tagged a) where
-  copoint = unTagged
+instance Copointed ((,,) a b) where
+  copoint (_,_,a) = a
 
-instance Copointed Identity where
-  copoint = runIdentity
+instance Copointed ((,,,) a b c) where
+  copoint (_,_,_,a) = a
 
 instance Default m => Copointed ((->)m) where
   copoint f = f def
 
+instance Copointed m => Copointed (WrappedMonad m) where
+  copoint = copoint . unwrapMonad
+
+#ifdef MIN_VERSION_comonad
 instance (Default m, Copointed w) => Copointed (TracedT m w) where
   copoint (TracedT w) = copoint w def
 
-instance Copointed ((,) a) where
-  copoint = snd
+instance Copointed w => Copointed (EnvT e w) where
+  copoint = copoint . lowerEnvT
 
-instance Copointed ((,,) a b) where
-  copoint (_,_,a) = a
+instance Copointed w => Copointed (StoreT s w) where
+  copoint (StoreT wf s) = copoint wf s
+#endif
 
-instance Copointed ((,,,) a b c) where
-  copoint (_,_,_,a) = a
+#if defined(MIN_VERSION_comonad) && !(MIN_VERSION_comonad(4,3,0))
+instance (Copointed p, Copointed q) => Copointed (Coproduct p q) where
+  copoint = coproduct copoint copoint
+#endif
 
+#ifdef MIN_VERSION_containers
 instance Copointed Tree where
   copoint = rootLabel
+#endif
 
-instance Copointed f => Copointed (Backwards f) where
-  copoint = copoint . forwards
+#ifdef MIN_VERSION_tagged
+instance Copointed (Tagged a) where
+  copoint = unTagged
+#endif
+
+#if defined(MIN_VERSION_transformers) || (MIN_VERSION_base(4,8,0))
+instance Copointed Identity where
+  copoint = runIdentity
+#endif
 
+#if defined(MIN_VERSION_transformers) || (MIN_VERSION_base(4,9,0))
 instance (Copointed p, Copointed q) => Copointed (Compose p q) where
   copoint = copoint . copoint . getCompose
 
-instance (Copointed p, Copointed q) => Copointed (Coproduct p q) where
-  copoint = coproduct copoint copoint
+instance (Copointed f, Copointed g) => Copointed (F.Sum f g) where
+  copoint (F.InL m) = copoint m
+  copoint (F.InR m) = copoint m
+#endif
+
+#ifdef MIN_VERSION_transformers
+instance Copointed f => Copointed (Backwards f) where
+  copoint = copoint . forwards
 
 instance Copointed f => Copointed (Applicative.Lift f) where
   copoint (Pure a)   = a
@@ -77,10 +132,6 @@
 instance Copointed f => Copointed (Reverse f) where
   copoint = copoint . getReverse
 
-instance (Functor g, g ~ h) => Copointed (Kan.Lift g h) where
-  copoint x = runIdentity (runLift x (fmap Identity))
-  {-# INLINE copoint #-}
-
 instance Copointed m => Copointed (IdentityT m) where
   copoint = copoint . runIdentityT
 
@@ -89,13 +140,15 @@
 
 instance Copointed m => Copointed (Strict.WriterT w m) where
   copoint = fst . copoint . Strict.runWriterT
+#endif
 
-instance Copointed Dual where
-  copoint = getDual
+instance Copointed Semigroup.Dual where
+  copoint = Semigroup.getDual
 
-instance Copointed Sum where
-  copoint = getSum
+instance Copointed Semigroup.Sum where
+  copoint = Semigroup.getSum
 
+#if defined(MIN_VERSION_semigroups) || (MIN_VERSION_base(4,9,0))
 instance Copointed NonEmpty where
   copoint ~(a :| _) = a
 
@@ -113,24 +166,27 @@
 
 instance Copointed WrappedMonoid where
   copoint = unwrapMonoid
+#endif
 
+#ifdef MIN_VERSION_semigroups
 #if MIN_VERSION_semigroups(0,16,2)
+#define HAVE_ARG 1
+#endif
+#elif MIN_VERSION_base(4,9,0)
+#define HAVE_ARG 1
+#endif
+
+#ifdef HAVE_ARG
 instance Copointed (Arg a) where
   copoint (Arg _ b) = b
 #endif
 
-instance Copointed w => Copointed (EnvT e w) where
-  copoint = copoint . lowerEnvT
-
-instance Copointed w => Copointed (StoreT s w) where
-  copoint (StoreT wf s) = copoint wf s
-
+#ifdef MIN_VERSION_semigroupoids
 instance Copointed f => Copointed (WrappedApplicative f) where
   copoint = copoint . unwrapApplicative
 
-instance Copointed m => Copointed (WrappedMonad m) where
-  copoint = copoint . unwrapMonad
-
 instance Copointed f => Copointed (MaybeApply f) where
   copoint (MaybeApply (Left fa)) = copoint fa
-  copoint (MaybeApply (Right a)) = a
\ No newline at end of file
+  copoint (MaybeApply (Right a)) = a
+#endif
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pointed-4.2.0.2/src/Data/Pointed.hs 
new/pointed-5/src/Data/Pointed.hs
--- old/pointed-4.2.0.2/src/Data/Pointed.hs     2015-05-17 14:32:46.000000000 
+0200
+++ new/pointed-5/src/Data/Pointed.hs   2016-01-17 03:40:19.000000000 +0100
@@ -1,35 +1,68 @@
 {-# LANGUAGE CPP #-}
 {-# LANGUAGE TypeFamilies #-}
-#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 702
-{-# LANGUAGE Safe #-}
-#endif
 {-# OPTIONS_GHC -fno-warn-deprecations #-}
+
+#ifndef MIN_VERSION_base
+#define MIN_VERSION_base(x,y,z) 0
+#endif
+
 module Data.Pointed where
 
 import Control.Arrow
 import Control.Applicative
-import Control.Comonad
-import Control.Concurrent.STM
-import Data.Default.Class
 import qualified Data.Monoid as Monoid
-import Data.Semigroup as Semigroup
-import Data.Functor.Identity
-import Data.Sequence (Seq, ViewL(..), ViewR(..))
-import qualified Data.Sequence as Seq
-import Data.Tree (Tree(..))
-import Data.Hashable
-import Data.HashMap.Lazy (HashMap)
-import qualified Data.HashMap.Lazy as HashMap
+import Data.Default.Class
+
+#ifdef MIN_VERSION_comonad
+import Control.Comonad
+#endif
+
+#ifdef MIN_VERSION_containers
 import Data.Map (Map)
 import qualified Data.Map as Map
 import Data.Set (Set)
 import qualified Data.Set as Set
+import Data.Sequence (Seq, ViewL(..), ViewR(..))
+import qualified Data.Sequence as Seq
+import Data.Tree (Tree(..))
+#endif
+
+#ifdef MIN_VERSION_kan_extensions
+import Data.Functor.Day.Curried
+#endif
+
+#if defined(MIN_VERSION_semigroups) || (MIN_VERSION_base(4,9,0))
+import Data.Semigroup as Semigroup
+import Data.List.NonEmpty
+#endif
+
+#ifdef MIN_VERSION_semigroupoids
 import Data.Functor.Bind
-import Data.Functor.Constant
-import Data.Functor.Kan.Rift
-import qualified Data.Functor.Product as Functor
+import Data.Semigroupoid.Static
+#endif
+
+#ifdef MIN_VERSION_stm
+import Control.Concurrent.STM
+#endif
+
+#if defined(MIN_VERSION_transformers) || (MIN_VERSION_base(4,8,0))
+import Data.Functor.Identity
+#endif
+
+#if defined(MIN_VERSION_transformers) || (MIN_VERSION_base(4,9,0))
 import Data.Functor.Compose
+import qualified Data.Functor.Product as Functor
+#endif
+
+#ifdef MIN_VERSION_transformers
+import Data.Functor.Constant
 import Data.Functor.Reverse
+import qualified Control.Monad.Trans.RWS.Lazy as Lazy
+import qualified Control.Monad.Trans.RWS.Strict as Strict
+import qualified Control.Monad.Trans.Writer.Lazy as Lazy
+import qualified Control.Monad.Trans.Writer.Strict as Strict
+import qualified Control.Monad.Trans.State.Lazy as Lazy
+import qualified Control.Monad.Trans.State.Strict as Strict
 import Control.Applicative.Backwards
 import Control.Applicative.Lift
 import Control.Monad.Trans.Cont
@@ -39,25 +72,24 @@
 import Control.Monad.Trans.Maybe
 import Control.Monad.Trans.Identity
 import Control.Monad.Trans.Reader
-import Data.List.NonEmpty
-import qualified Control.Monad.Trans.RWS.Lazy as Lazy
-import qualified Control.Monad.Trans.RWS.Strict as Strict
-import qualified Control.Monad.Trans.Writer.Lazy as Lazy
-import qualified Control.Monad.Trans.Writer.Strict as Strict
-import qualified Control.Monad.Trans.State.Lazy as Lazy
-import qualified Control.Monad.Trans.State.Strict as Strict
-import Data.Semigroupoid.Static
-import Data.Tagged
+#endif
+
+#if defined(MIN_VERSION_tagged) || (MIN_VERSION_base(4,7,0))
 import Data.Proxy
+#endif
 
-class Pointed p where
-  point :: a -> p a
+#ifdef MIN_VERSION_tagged
+import Data.Tagged
+#endif
 
-instance Pointed Proxy where
-  point _ = Proxy
+#if defined(MIN_VERSION_unordered_containers)
+import Data.Hashable
+import Data.HashMap.Lazy (HashMap)
+import qualified Data.HashMap.Lazy as HashMap
+#endif
 
-instance Pointed (Tagged a) where
-  point = Tagged
+class Pointed p where
+  point :: a -> p a
 
 instance Pointed [] where
   point a = [a]
@@ -71,20 +103,13 @@
 instance Pointed IO where
   point = return
 
-instance Pointed STM where
-  point = return
-
-instance Pointed Tree where
-  point a = Node a []
-
-instance Pointed NonEmpty where
-  point a = a :| []
-
 instance Pointed ZipList where
   point = pure
 
+#if MIN_VERSION_base(4,8,0) || defined(MIN_VERSION_transformers)
 instance Pointed Identity where
   point = Identity
+#endif
 
 instance Pointed ((->)e) where
   point = const
@@ -92,23 +117,23 @@
 instance Default e => Pointed ((,)e) where
   point = (,) def
 
-instance Monad m => Pointed (WrappedMonad m) where
-  point = WrapMonad . return
-
 instance Default m => Pointed (Const m) where
   point _ = Const def
 
+instance Monad m => Pointed (WrappedMonad m) where
+  point = WrapMonad . return
+
 instance Arrow a => Pointed (WrappedArrow a b) where
   point = pure
 
-instance Pointed Dual where
-  point = Dual
+instance Pointed Monoid.Dual where
+  point = Monoid.Dual
 
-instance Pointed Endo where
-  point = Endo . const
+instance Pointed Monoid.Endo where
+  point = Monoid.Endo . const
 
-instance Pointed Sum where
-  point = Sum
+instance Pointed Monoid.Sum where
+  point = Monoid.Sum
 
 instance Pointed Monoid.Product where
   point = Monoid.Product
@@ -119,6 +144,52 @@
 instance Pointed Monoid.Last where
   point = Monoid.Last . Just
 
+#ifdef MIN_VERSION_comonad
+instance Pointed (Cokleisli w a) where
+  point = Cokleisli . const
+#endif
+
+#ifdef MIN_VERSION_containers
+instance Pointed Tree where
+  point a = Node a []
+
+instance Default k => Pointed (Map k) where
+  point = Map.singleton def
+
+instance Pointed Seq where
+  point = Seq.singleton
+
+instance Pointed ViewL where
+  point a = a :< Seq.empty
+
+instance Pointed ViewR where
+  point a = Seq.empty :> a
+
+instance Pointed Set where
+  point = Set.singleton
+#endif
+
+#ifdef MIN_VERSION_kan_extensions
+instance (Functor g, g ~ h) => Pointed (Curried g h) where
+  point a = Curried (fmap ($a))
+  {-# INLINE point #-}
+#endif
+
+#ifdef MIN_VERSION_semigroupoids
+instance Pointed m => Pointed (Static m a) where
+  point = Static . point . const
+
+instance Pointed f => Pointed (WrappedApplicative f) where
+  point = WrapApplicative . point
+
+instance Pointed (MaybeApply f) where
+  point = MaybeApply . Right
+#endif
+
+#if defined(MIN_VERSION_semigroups) || (MIN_VERSION_base(4,9,0))
+instance Pointed NonEmpty where
+  point a = a :| []
+
 instance Pointed Semigroup.First where
   point = Semigroup.First
 
@@ -136,52 +207,47 @@
 
 instance Pointed WrappedMonoid where
   point = WrapMonoid
+#endif
 
+#ifdef MIN_VERSION_semigroups
 #if MIN_VERSION_semigroups(0,16,2)
+#define HAVE_ARG 1
+#endif
+#elif MIN_VERSION_base(4,9,0)
+#define HAVE_ARG 1
+#endif
+
+#ifdef HAVE_ARG
 instance Default a => Pointed (Arg a) where
   point = Arg def
 #endif
 
-instance (Default k, Hashable k) => Pointed (HashMap k) where
-  point = HashMap.singleton def
-
-instance Default k => Pointed (Map k) where
-  point = Map.singleton def
-
-instance Pointed Seq where
-  point = Seq.singleton
-
-instance Pointed ViewL where
-  point a = a :< Seq.empty
+#ifdef MIN_VERSION_stm
+instance Pointed STM where
+  point = return
+#endif
 
-instance Pointed ViewR where
-  point a = Seq.empty :> a
+#if defined(MIN_VERSION_tagged) || (MIN_VERSION_base(4,7,0))
+instance Pointed Proxy where
+  point _ = Proxy
+#endif
 
-instance Pointed Set where
-  point = Set.singleton
+#ifdef MIN_VERSION_tagged
+instance Pointed (Tagged a) where
+  point = Tagged
+#endif
 
+#if defined(MIN_VERSION_transformers) || (MIN_VERSION_base(4,9,0))
 instance (Pointed p, Pointed q) => Pointed (Compose p q) where
   point = Compose . point . point
+#endif
 
-instance Pointed f => Pointed (Reverse f) where
-  point = Reverse . point
-
-instance Pointed f => Pointed (Backwards f) where
-  point = Backwards . point
-
-instance Pointed (Lift f) where
-  point = Pure
-
-instance (Functor g, g ~ h) => Pointed (Rift g h) where
-  point a = Rift (fmap ($a))
-  {-# INLINE point #-}
-
+#if defined(MIN_VERSION_transformers) || (MIN_VERSION_base(4,9,0))
 instance (Pointed p, Pointed q) => Pointed (Functor.Product p q) where
   point a = Functor.Pair (point a) (point a)
+#endif
 
-instance Default m => Pointed (Constant m) where
-  point _ = Constant def
-
+#ifdef MIN_VERSION_transformers
 instance Pointed (ContT r m) where
   point a = ContT ($ a)
 
@@ -203,6 +269,15 @@
 instance Pointed m => Pointed (ReaderT r m) where
   point = ReaderT . const . point
 
+instance Default m => Pointed (Constant m) where
+  point _ = Constant def
+
+instance Pointed m => Pointed (Lazy.StateT s m) where
+  point a = Lazy.StateT $ \s -> point (a, s)
+
+instance Pointed m => Pointed (Strict.StateT s m) where
+  point a = Strict.StateT $ \s -> point (a, s)
+
 instance (Default w, Pointed m) => Pointed (Lazy.RWST r w s m) where
   point a = Lazy.RWST $ \_ s -> point (a, s, def)
 
@@ -215,20 +290,18 @@
 instance (Default w, Pointed m) => Pointed (Strict.WriterT w m) where
   point a = Strict.WriterT $ point (a, def)
 
-instance Pointed m => Pointed (Lazy.StateT s m) where
-  point a = Lazy.StateT $ \s -> point (a, s)
-
-instance Pointed m => Pointed (Strict.StateT s m) where
-  point a = Strict.StateT $ \s -> point (a, s)
+instance Pointed f => Pointed (Reverse f) where
+  point = Reverse . point
 
-instance Pointed m => Pointed (Static m a) where
-  point = Static . point . const
+instance Pointed f => Pointed (Backwards f) where
+  point = Backwards . point
 
-instance Pointed (Cokleisli w a) where
-  point = Cokleisli . const
+instance Pointed (Lift f) where
+  point = Pure
+#endif
 
-instance Pointed f => Pointed (WrappedApplicative f) where
-  point = WrapApplicative . point
+#if defined(MIN_VERSION_unordered_containers)
+instance (Default k, Hashable k) => Pointed (HashMap k) where
+  point = HashMap.singleton def
+#endif
 
-instance Pointed (MaybeApply f) where
-  point = MaybeApply . Right

++++++ pointed.cabal ++++++
name:          pointed
category:      Data
version:       5
x-revision: 1
license:       BSD3
cabal-version: >= 1.6
license-file:  LICENSE
author:        Edward A. Kmett
maintainer:    Edward A. Kmett <ekm...@gmail.com>
stability:     provisional
homepage:      http://github.com/ekmett/pointed/
bug-reports:   http://github.com/ekmett/pointed/issues
copyright:     Copyright (C) 2008-2016 Edward A. Kmett
synopsis:      Pointed and copointed data
description:   Pointed and copointed data
build-type:    Simple
extra-source-files:
  .travis.yml
  README.markdown
  CHANGELOG.markdown

source-repository head
  type: git
  location: git://github.com/ekmett/pointed.git

flag comonad
  description: You can disable the use of the `comonad` package using 
`-f-transformers`.
  default: True
  manual: True
flag containers
  description: You can disable the use of the `containers` package using 
`-f-containers`.
  default: True
  manual: True
flag kan-extensions
  description: You can disable the use of the `kan-extensions` package using 
`-f-kan-extensions`.
  default: True
  manual: True
flag semigroupoids
  description: You can disable the use of the `semigroupoids` package using 
`-f-semigroupoids`.
  default: True
  manual: True
flag semigroups
  description: You can disable the use of the `semigroups` package using 
`-f-semigroups`.
  default: True
  manual: True
flag stm
  description: You can disable the use of the `stm` package using `-f-stm`.
  default: True
  manual: True
flag tagged
  description: You can disable the use of the `tagged` package using 
`-f-tagged`.
  default: True
  manual: True
flag transformers
  description: You can disable the use of the `transformers` package using 
`-f-transformers`.
  default: True
  manual: True
flag unordered-containers
  description: You can disable the use of the `unordered-containers` package 
using `-f-unordered-containers`.
  default: True
  manual: True

library
  build-depends: base >= 4 && < 5,
                 data-default-class >= 0.0.1 && < 0.2

  if flag(comonad)
    build-depends: comonad >= 5 && < 6

  if flag(containers)
    build-depends: containers >= 0.4 && < 0.6

  if flag(kan-extensions)
    build-depends: kan-extensions >= 5 && < 6

  if flag(semigroupoids)
    build-depends: semigroupoids >= 4 && < 6

  if flag(semigroups)
    build-depends: semigroups >= 0.8.3.1 && < 1

  if flag(stm)
    build-depends: stm >= 2.1.2.1 && < 2.5

  if flag(tagged)
    build-depends: tagged >= 0.5 && < 1

  if flag(transformers)
    build-depends: transformers >= 0.2 && < 0.6, transformers-compat >= 0.3 && 
< 1

  if flag(unordered-containers)
    build-depends: hashable >= 1.1 && < 1.3, unordered-containers >= 0.2 && < 
0.3

  exposed-modules:
    Data.Pointed
    Data.Copointed

  ghc-options: -Wall
  hs-source-dirs: src

Reply via email to