-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Higher-rank Hashable -- -- This package provides higher rank analogues to the Hashable data type. -- -- The need for these sometimes arises in the presence of polymorphic -- recursion. @package hashable-extras @version 0.1.2 module Data.Hashable.Extras class Hashable1 t where hashWithSalt1 = hashWithSalt1 hash1 = hashWithSalt1 salt hashWithSalt1 :: (Hashable1 t, Hashable a) => Int -> t a -> Int hash1 :: (Hashable1 t, Hashable a) => t a -> Int class Hashable2 t where hashWithSalt2 = hashWithSalt hash2 = hashWithSalt2 salt hashWithSalt2 :: (Hashable2 t, Hashable a, Hashable b) => Int -> t a b -> Int hash2 :: (Hashable2 t, Hashable a, Hashable b) => t a b -> Int data Hashed Hashed :: (Int -> Int) -> Hashed unhashed :: Hashed -> Int -> Int hashWith1 :: (Functor t, Hashable1 t) => (Int -> a -> Int) -> Int -> t a -> Int hashWith2 :: (Bifunctor t, Hashable2 t) => (Int -> a -> Int) -> (Int -> b -> Int) -> Int -> t a b -> Int -- | Extract the default salt used by Hashable salt :: Int instance (Hashable a, Hashable b, Hashable c, Hashable d, Hashable e) => Hashable2 ((,,,,,,) a b c d e) instance (Hashable a, Hashable b, Hashable c, Hashable d) => Hashable2 ((,,,,,) a b c d) instance (Hashable a, Hashable b, Hashable c) => Hashable2 ((,,,,) a b c) instance (Hashable a, Hashable b) => Hashable2 ((,,,) a b) instance Hashable a => Hashable2 ((,,) a) instance Hashable2 (,) instance Hashable2 Either instance (Hashable a, Hashable b, Hashable c, Hashable d, Hashable e, Hashable f) => Hashable1 ((,,,,,,) a b c d e f) instance (Hashable a, Hashable b, Hashable c, Hashable d, Hashable e) => Hashable1 ((,,,,,) a b c d e) instance (Hashable a, Hashable b, Hashable c, Hashable d) => Hashable1 ((,,,,) a b c d) instance (Hashable a, Hashable b, Hashable c) => Hashable1 ((,,,) a b c) instance (Hashable a, Hashable b) => Hashable1 ((,,) a b) instance Hashable a => Hashable1 ((,) a) instance Hashable a => Hashable1 (Either a) instance Hashable1 [] instance Hashable1 Maybe instance Hashable1 Identity instance Hashable Salt instance Hashable Hashed