[commit: vector] master: Implement poly-kinded Typeable (8b27167)

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

[commit: vector] master: Implement poly-kinded Typeable (8b27167)

Simon Peyton Jones
Hang on... vector has an upstream repo; see
http://hackage.haskell.org/trac/ghc/wiki/Repositories
and in particular the "Upstream repo?" bullet.
So we may need to do more than push to the mirror?

Simon

| -----Original Message-----
| From: ghc-commits-bounces at haskell.org [mailto:ghc-commits-
| bounces at haskell.org] On Behalf Of Jos? Pedro Magalh?es
| Sent: 12 February 2013 10:41
| To: ghc-commits at haskell.org
| Subject: [commit: vector] master: Implement poly-kinded Typeable
| (8b27167)
|
| Repository : ssh://darcs.haskell.org//srv/darcs/packages/vector
|
| On branch  : master
|
| http://hackage.haskell.org/trac/ghc/changeset/8b271670f79a3b50d7e15ca924
| 878212f042f259
|
| >---------------------------------------------------------------
|
| commit 8b271670f79a3b50d7e15ca924878212f042f259
| Author: Jose Pedro Magalhaes <jpm at cs.ox.ac.uk>
| Date:   Thu Feb 7 14:00:33 2013 +0000
|
|     Implement poly-kinded Typeable
|
|     This patch makes the Data.Typeable.Typeable class work with
| arguments of any
|     kind. In particular, this removes the Typeable1..7 class hierarchy,
| greatly
|     simplyfing the whole Typeable story. Also added is the
| AutoDeriveTypeable
|     language extension, which will automatically derive Typeable for all
| types and
|     classes declared in that module. Since there is now no good reason
| to give
|     handwritten instances of the Typeable class, those are ignored (for
| backwards
|     compatibility), and a warning is emitted.
|
|     The old, kind-* Typeable class is now called OldTypeable, and lives
| in the
|     Data.OldTypeable module. It is deprecated, and should be removed in
| some future
|     version of GHC.
|
| >---------------------------------------------------------------
|
|  Data/Vector/Generic.hs      |    9 +++++++++
|  Data/Vector/Unboxed/Base.hs |   14 +++++++++++++-
|  2 files changed, 22 insertions(+), 1 deletions(-)
|
| diff --git a/Data/Vector/Generic.hs b/Data/Vector/Generic.hs index
| b8f2e81..f17ff23 100644
| --- a/Data/Vector/Generic.hs
| +++ b/Data/Vector/Generic.hs
| @@ -194,7 +194,12 @@ import Prelude hiding ( length, null,
|                          showsPrec )
|
|  import qualified Text.Read as Read
| +
| +#if __GLASGOW_HASKELL__ >= 707
| +import Data.Typeable ( Typeable, gcast1 ) #else
|  import Data.Typeable ( Typeable1, gcast1 )
| +#endif
|
|  #include "vector.h"
|
| @@ -2020,7 +2025,11 @@ mkType :: String -> DataType  {-# INLINE mkType
| #-}  mkType = mkNoRepType
|
| +#if __GLASGOW_HASKELL__ >= 707
| +dataCast :: (Vector v a, Data a, Typeable v, Typeable t) #else
|  dataCast :: (Vector v a, Data a, Typeable1 v, Typeable1 t)
| +#endif
|           => (forall d. Data  d => c (t d)) -> Maybe  (c (v a))  {-#
| INLINE dataCast #-}  dataCast f = gcast1 f diff --git
| a/Data/Vector/Unboxed/Base.hs b/Data/Vector/Unboxed/Base.hs index
| 2d9822e..359b001 100644
| --- a/Data/Vector/Unboxed/Base.hs
| +++ b/Data/Vector/Unboxed/Base.hs
| @@ -1,4 +1,7 @@
|  {-# LANGUAGE MultiParamTypeClasses, TypeFamilies, FlexibleContexts #-}
| +#if __GLASGOW_HASKELL__ >= 707
| +{-# LANGUAGE DeriveDataTypeable, StandaloneDeriving #-} #endif
|  {-# OPTIONS_HADDOCK hide #-}
|
|  -- |
| @@ -29,6 +32,9 @@ import Data.Word ( Word, Word8, Word16, Word32, Word64
| )  import Data.Int  ( Int8, Int16, Int32, Int64 )  import Data.Complex
|
| +#if __GLASGOW_HASKELL__ >= 707
| +import Data.Typeable ( Typeable )
| +#else
|  import Data.Typeable ( Typeable1(..), Typeable2(..), mkTyConApp,  #if
| MIN_VERSION_base(4,4,0)
|                         mkTyCon3
| @@ -36,6 +42,8 @@ import Data.Typeable ( Typeable1(..), Typeable2(..),
| mkTyConApp,
|                         mkTyCon
|  #endif
|                       )
| +#endif
| +
|  import Data.Data     ( Data(..) )
|
|  #include "vector.h"
| @@ -53,7 +61,10 @@ class (G.Vector Vector a, M.MVector MVector a) =>
| Unbox a
|  -- -----------------
|  -- Data and Typeable
|  -- -----------------
| -
| +#if __GLASGOW_HASKELL__ >= 707
| +deriving instance Typeable Vector
| +deriving instance Typeable MVector
| +#else
|  #if MIN_VERSION_base(4,4,0)
|  vectorTyCon = mkTyCon3 "vector"
|  #else
| @@ -65,6 +76,7 @@ instance Typeable1 Vector where
|
|  instance Typeable2 MVector where
|    typeOf2 _ = mkTyConApp (vectorTyCon "Data.Vector.Unboxed.Mutable"
| "MVector") []
| +#endif
|
|  instance (Data a, Unbox a) => Data (Vector a) where
|    gfoldl       = G.gfoldl
|
|
|
| _______________________________________________
| ghc-commits mailing list
| ghc-commits at haskell.org
| http://www.haskell.org/mailman/listinfo/ghc-commits


Reply | Threaded
Open this post in threaded view
|

[commit: vector] master: Implement poly-kinded Typeable (8b27167)

José Pedro Magalhães
Yes, same for time. I've contacted the maintainers a while ago, and will do
so
again today.


Cheers,
Pedro

On Tue, Feb 12, 2013 at 11:07 AM, Simon Peyton-Jones
<simonpj at microsoft.com>wrote:

> Hang on... vector has an upstream repo; see
> http://hackage.haskell.org/trac/ghc/wiki/Repositories
> and in particular the "Upstream repo?" bullet.
> So we may need to do more than push to the mirror?
>
> Simon
>
> | -----Original Message-----
> | From: ghc-commits-bounces at haskell.org [mailto:ghc-commits-
> | bounces at haskell.org] On Behalf Of Jos? Pedro Magalh?es
> | Sent: 12 February 2013 10:41
> | To: ghc-commits at haskell.org
> | Subject: [commit: vector] master: Implement poly-kinded Typeable
> | (8b27167)
> |
> | Repository : ssh://darcs.haskell.org//srv/darcs/packages/vector
> |
> | On branch  : master
> |
> | http://hackage.haskell.org/trac/ghc/changeset/8b271670f79a3b50d7e15ca924
> | 878212f042f259
> |
> | >---------------------------------------------------------------
> |
> | commit 8b271670f79a3b50d7e15ca924878212f042f259
> | Author: Jose Pedro Magalhaes <jpm at cs.ox.ac.uk>
> | Date:   Thu Feb 7 14:00:33 2013 +0000
> |
> |     Implement poly-kinded Typeable
> |
> |     This patch makes the Data.Typeable.Typeable class work with
> | arguments of any
> |     kind. In particular, this removes the Typeable1..7 class hierarchy,
> | greatly
> |     simplyfing the whole Typeable story. Also added is the
> | AutoDeriveTypeable
> |     language extension, which will automatically derive Typeable for all
> | types and
> |     classes declared in that module. Since there is now no good reason
> | to give
> |     handwritten instances of the Typeable class, those are ignored (for
> | backwards
> |     compatibility), and a warning is emitted.
> |
> |     The old, kind-* Typeable class is now called OldTypeable, and lives
> | in the
> |     Data.OldTypeable module. It is deprecated, and should be removed in
> | some future
> |     version of GHC.
> |
> | >---------------------------------------------------------------
> |
> |  Data/Vector/Generic.hs      |    9 +++++++++
> |  Data/Vector/Unboxed/Base.hs |   14 +++++++++++++-
> |  2 files changed, 22 insertions(+), 1 deletions(-)
> |
> | diff --git a/Data/Vector/Generic.hs b/Data/Vector/Generic.hs index
> | b8f2e81..f17ff23 100644
> | --- a/Data/Vector/Generic.hs
> | +++ b/Data/Vector/Generic.hs
> | @@ -194,7 +194,12 @@ import Prelude hiding ( length, null,
> |                          showsPrec )
> |
> |  import qualified Text.Read as Read
> | +
> | +#if __GLASGOW_HASKELL__ >= 707
> | +import Data.Typeable ( Typeable, gcast1 ) #else
> |  import Data.Typeable ( Typeable1, gcast1 )
> | +#endif
> |
> |  #include "vector.h"
> |
> | @@ -2020,7 +2025,11 @@ mkType :: String -> DataType  {-# INLINE mkType
> | #-}  mkType = mkNoRepType
> |
> | +#if __GLASGOW_HASKELL__ >= 707
> | +dataCast :: (Vector v a, Data a, Typeable v, Typeable t) #else
> |  dataCast :: (Vector v a, Data a, Typeable1 v, Typeable1 t)
> | +#endif
> |           => (forall d. Data  d => c (t d)) -> Maybe  (c (v a))  {-#
> | INLINE dataCast #-}  dataCast f = gcast1 f diff --git
> | a/Data/Vector/Unboxed/Base.hs b/Data/Vector/Unboxed/Base.hs index
> | 2d9822e..359b001 100644
> | --- a/Data/Vector/Unboxed/Base.hs
> | +++ b/Data/Vector/Unboxed/Base.hs
> | @@ -1,4 +1,7 @@
> |  {-# LANGUAGE MultiParamTypeClasses, TypeFamilies, FlexibleContexts #-}
> | +#if __GLASGOW_HASKELL__ >= 707
> | +{-# LANGUAGE DeriveDataTypeable, StandaloneDeriving #-} #endif
> |  {-# OPTIONS_HADDOCK hide #-}
> |
> |  -- |
> | @@ -29,6 +32,9 @@ import Data.Word ( Word, Word8, Word16, Word32, Word64
> | )  import Data.Int  ( Int8, Int16, Int32, Int64 )  import Data.Complex
> |
> | +#if __GLASGOW_HASKELL__ >= 707
> | +import Data.Typeable ( Typeable )
> | +#else
> |  import Data.Typeable ( Typeable1(..), Typeable2(..), mkTyConApp,  #if
> | MIN_VERSION_base(4,4,0)
> |                         mkTyCon3
> | @@ -36,6 +42,8 @@ import Data.Typeable ( Typeable1(..), Typeable2(..),
> | mkTyConApp,
> |                         mkTyCon
> |  #endif
> |                       )
> | +#endif
> | +
> |  import Data.Data     ( Data(..) )
> |
> |  #include "vector.h"
> | @@ -53,7 +61,10 @@ class (G.Vector Vector a, M.MVector MVector a) =>
> | Unbox a
> |  -- -----------------
> |  -- Data and Typeable
> |  -- -----------------
> | -
> | +#if __GLASGOW_HASKELL__ >= 707
> | +deriving instance Typeable Vector
> | +deriving instance Typeable MVector
> | +#else
> |  #if MIN_VERSION_base(4,4,0)
> |  vectorTyCon = mkTyCon3 "vector"
> |  #else
> | @@ -65,6 +76,7 @@ instance Typeable1 Vector where
> |
> |  instance Typeable2 MVector where
> |    typeOf2 _ = mkTyConApp (vectorTyCon "Data.Vector.Unboxed.Mutable"
> | "MVector") []
> | +#endif
> |
> |  instance (Data a, Unbox a) => Data (Vector a) where
> |    gfoldl       = G.gfoldl
> |
> |
> |
> | _______________________________________________
> | ghc-commits mailing list
> | ghc-commits at haskell.org
> | http://www.haskell.org/mailman/listinfo/ghc-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/ghc-devs/attachments/20130212/c63707e4/attachment.htm>