-- 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.2.3 module Data.Hashable.Extras class Hashable1 t where hashWithSalt1 = hashWithSalt 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 Data.Hashable.Class.Hashable Data.Hashable.Extras.Hashed instance Data.Hashable.Class.Hashable Data.Hashable.Extras.Salt instance Data.Hashable.Extras.Hashable1 Data.Functor.Identity.Identity instance Data.Hashable.Extras.Hashable1 GHC.Base.Maybe instance Data.Hashable.Extras.Hashable1 [] instance Data.Hashable.Class.Hashable a => Data.Hashable.Extras.Hashable1 (Data.Either.Either a) instance Data.Hashable.Class.Hashable a => Data.Hashable.Extras.Hashable1 ((,) a) instance (Data.Hashable.Class.Hashable a, Data.Hashable.Class.Hashable b) => Data.Hashable.Extras.Hashable1 ((,,) a b) instance (Data.Hashable.Class.Hashable a, Data.Hashable.Class.Hashable b, Data.Hashable.Class.Hashable c) => Data.Hashable.Extras.Hashable1 ((,,,) a b c) instance (Data.Hashable.Class.Hashable a, Data.Hashable.Class.Hashable b, Data.Hashable.Class.Hashable c, Data.Hashable.Class.Hashable d) => Data.Hashable.Extras.Hashable1 ((,,,,) a b c d) instance (Data.Hashable.Class.Hashable a, Data.Hashable.Class.Hashable b, Data.Hashable.Class.Hashable c, Data.Hashable.Class.Hashable d, Data.Hashable.Class.Hashable e) => Data.Hashable.Extras.Hashable1 ((,,,,,) a b c d e) instance (Data.Hashable.Class.Hashable a, Data.Hashable.Class.Hashable b, Data.Hashable.Class.Hashable c, Data.Hashable.Class.Hashable d, Data.Hashable.Class.Hashable e, Data.Hashable.Class.Hashable f) => Data.Hashable.Extras.Hashable1 ((,,,,,,) a b c d e f) instance Data.Hashable.Extras.Hashable2 Data.Either.Either instance Data.Hashable.Extras.Hashable2 (,) instance Data.Hashable.Class.Hashable a => Data.Hashable.Extras.Hashable2 ((,,) a) instance (Data.Hashable.Class.Hashable a, Data.Hashable.Class.Hashable b) => Data.Hashable.Extras.Hashable2 ((,,,) a b) instance (Data.Hashable.Class.Hashable a, Data.Hashable.Class.Hashable b, Data.Hashable.Class.Hashable c) => Data.Hashable.Extras.Hashable2 ((,,,,) a b c) instance (Data.Hashable.Class.Hashable a, Data.Hashable.Class.Hashable b, Data.Hashable.Class.Hashable c, Data.Hashable.Class.Hashable d) => Data.Hashable.Extras.Hashable2 ((,,,,,) a b c d) instance (Data.Hashable.Class.Hashable a, Data.Hashable.Class.Hashable b, Data.Hashable.Class.Hashable c, Data.Hashable.Class.Hashable d, Data.Hashable.Class.Hashable e) => Data.Hashable.Extras.Hashable2 ((,,,,,,) a b c d e)