packages feed

instant-hashable 0.1.0.1 → 0.2

raw patch · 3 files changed

+49/−27 lines, 3 filesdep ~basePVP ok

version bump matches the API change (PVP)

Dependency ranges changed: base

API changes (from Hackage documentation)

- Generics.Instant.Functions.Hashable: instance (Generics.Instant.Functions.Hashable.GHashable a, Generics.Instant.Functions.Hashable.GHashable b) => Generics.Instant.Functions.Hashable.GHashable (a Generics.Instant.Base.:*: b)
- Generics.Instant.Functions.Hashable: instance (Generics.Instant.Functions.Hashable.GHashable a, Generics.Instant.Functions.Hashable.GHashable b) => Generics.Instant.Functions.Hashable.GHashable (a Generics.Instant.Base.:+: b)
- Generics.Instant.Functions.Hashable: instance Data.Hashable.Class.Hashable a => Generics.Instant.Functions.Hashable.GHashable (Generics.Instant.Base.Rec a)
- Generics.Instant.Functions.Hashable: instance Data.Hashable.Class.Hashable a => Generics.Instant.Functions.Hashable.GHashable (Generics.Instant.Base.Var a)
- Generics.Instant.Functions.Hashable: instance Generics.Instant.Functions.Hashable.GHashable Generics.Instant.Base.U
- Generics.Instant.Functions.Hashable: instance Generics.Instant.Functions.Hashable.GHashable Generics.Instant.Base.Z
- Generics.Instant.Functions.Hashable: instance forall (k :: BOX) (k1 :: BOX) (c :: k) (p :: k1) (q :: k1) a. Generics.Instant.Functions.Hashable.GHashable a => Generics.Instant.Functions.Hashable.GHashable (Generics.Instant.Base.CEq c p q a)
+ Generics.Instant.Functions.Hashable: class (Representable a, GHashable (Rep a)) => RepGHashable a
+ Generics.Instant.Functions.Hashable: ghashWithSaltDefault :: (Representable a, GHashable (Rep a)) => Int -> a -> Int
+ Generics.Instant.Functions.Hashable: instance (GHashable a, GHashable b) => GHashable (a :*: b)
+ Generics.Instant.Functions.Hashable: instance (GHashable a, GHashable b) => GHashable (a :+: b)
+ Generics.Instant.Functions.Hashable: instance (Representable a, GHashable (Rep a)) => RepGHashable a
+ Generics.Instant.Functions.Hashable: instance GHashable U
+ Generics.Instant.Functions.Hashable: instance GHashable Z
+ Generics.Instant.Functions.Hashable: instance GHashable a => GHashable (CEq c p q a)
+ Generics.Instant.Functions.Hashable: instance Hashable a => GHashable (Rec a)
+ Generics.Instant.Functions.Hashable: instance Hashable a => GHashable (Var a)
- Generics.Instant.Functions.Hashable: ghashWithSalt :: (Representable a, GHashable (Rep a)) => Int -> a -> Int
+ Generics.Instant.Functions.Hashable: ghashWithSalt :: GHashable a => Int -> a -> Int

Files

CHANGELOG.md view
@@ -1,3 +1,14 @@+# Version 0.2++* Rename 'ghashWithSalt' to 'ghashWithSaltDefault'.++* Export 'RepGHashable'++* Export 'GHashable' internals.++* Relax dependencies.++ # Version 0.1.0.1  * Raise upper bound on `instant-generics` dependency.
instant-hashable.cabal view
@@ -1,11 +1,14 @@ name:                instant-hashable-version:             0.1.0.1+version:             0.2 author:              Renzo Carbonara maintainer:          renzo@carbonara.com.ar copyright:           Renzo Carbonara 2015 license:             BSD3 license-file:        LICENSE.txt-category:            Web+stability:           Experimental+homepage:            https://github.com/k0001/instant-hashable+bug-reports:         https://github.com/k0001/instant-hashable/issues+category:            Generics build-type:          Simple extra-source-files:  README.md CHANGELOG.md cabal-version:       >=1.18@@ -18,7 +21,7 @@       Generics.Instant.Functions.Hashable   build-depends:       hashable >=1.2 && <1.3-    , base >=4.8 && <4.9+    , base >=4.7 && <4.9     , instant-generics >=0.4 && <0.6   ghcjs-options: -Wall -O3   ghc-options: -Wall -O2
src/lib/Generics/Instant/Functions/Hashable.hs view
@@ -4,12 +4,14 @@ {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeOperators #-} {-# LANGUAGE PolyKinds #-}+{-# LANGUAGE UndecidableInstances #-}  module Generics.Instant.Functions.Hashable   ( -- $defaults-    ghashWithSalt+    ghashWithSaltDefault+  , RepGHashable     -- * Internals-  , GHashable+  , GHashable(..)   ) where  import           Data.Hashable (Hashable(hashWithSalt))@@ -18,48 +20,54 @@ -------------------------------------------------------------------------------- -- $defaults ----- You can use 'ghashWithSalt' as your generic 'hashWithSalt' for any+-- You can use 'ghashWithSaltDefault' as your generic 'hashWithSalt' for any -- 'Representable' type as follows: -- -- @--- instance 'Hashable' MyType where hashWithSalt = 'ghashWithSalt'+-- instance 'Hashable' MyType where hashWithSalt = 'ghashWithSaltDefault' -- @ -ghashWithSalt :: (Representable a, GHashable (Rep a)) => Int -> a -> Int-ghashWithSalt = \s a -> ghashWithSalt' s (from a)-{-# INLINABLE ghashWithSalt #-}+ghashWithSaltDefault :: (Representable a, GHashable (Rep a)) => Int -> a -> Int+ghashWithSaltDefault = \s a -> ghashWithSalt s (from a)+{-# INLINABLE ghashWithSaltDefault #-} +-- | @'RepGHashable'@ is simply a synonym for+-- @('Representable' a, 'GHashable' ('Rep' a))@ with the convenient+-- kind @(* -> 'GHC.Exts.Constraint')@+class (Representable a, GHashable (Rep a)) => RepGHashable a+instance (Representable a, GHashable (Rep a)) => RepGHashable a+ --------------------------------------------------------------------------------  class GHashable a where-  ghashWithSalt' :: Int -> a -> Int+  ghashWithSalt :: Int -> a -> Int  instance GHashable Z where-  ghashWithSalt' _ _ = error-    "Generics.Instant.Functions.Hashable.GHashable Z ghashWithSalt' - impossible"+  ghashWithSalt _ _ = error+    "Generics.Instant.Functions.Hashable.GHashable Z ghashWithSalt - impossible"  instance GHashable U where-  ghashWithSalt' s U = hashWithSalt s ()-  {-# INLINABLE ghashWithSalt' #-}+  ghashWithSalt s U = hashWithSalt s ()+  {-# INLINABLE ghashWithSalt #-}  instance GHashable a => GHashable (CEq c p q a) where-  ghashWithSalt' s (C a) = ghashWithSalt' s a-  {-# INLINABLE ghashWithSalt' #-}+  ghashWithSalt s (C a) = ghashWithSalt s a+  {-# INLINABLE ghashWithSalt #-}  instance (GHashable a, GHashable b) => GHashable (a :*: b) where-  ghashWithSalt' s (a :*: b) = ghashWithSalt' (ghashWithSalt' s a) b-  {-# INLINABLE ghashWithSalt' #-}+  ghashWithSalt s (a :*: b) = ghashWithSalt (ghashWithSalt s a) b+  {-# INLINABLE ghashWithSalt #-}  instance (GHashable a, GHashable b) => GHashable (a :+: b) where-  ghashWithSalt' s lr = 0 `hashWithSalt` case lr of-    L a -> Left  (ghashWithSalt' s a)-    R b -> Right (ghashWithSalt' s b)-  {-# INLINABLE ghashWithSalt' #-}+  ghashWithSalt s lr = 0 `hashWithSalt` case lr of+    L a -> Left  (ghashWithSalt s a)+    R b -> Right (ghashWithSalt s b)+  {-# INLINABLE ghashWithSalt #-}  instance Hashable a => GHashable (Var a) where-  ghashWithSalt' s (Var a) = hashWithSalt s a-  {-# INLINABLE ghashWithSalt' #-}+  ghashWithSalt s (Var a) = hashWithSalt s a+  {-# INLINABLE ghashWithSalt #-}  instance Hashable a => GHashable (Rec a) where-  ghashWithSalt' s (Rec a) = hashWithSalt s a-  {-# INLINABLE ghashWithSalt' #-}+  ghashWithSalt s (Rec a) = hashWithSalt s a+  {-# INLINABLE ghashWithSalt #-}