Package fj

Class Hash<A>


  • public final class Hash<A>
    extends java.lang.Object
    Produces a hash code for an object which should attempt uniqueness.
    • Field Detail

      • f

        private final F<A,​java.lang.Integer> f
      • booleanHash

        public static final Hash<java.lang.Boolean> booleanHash
        A hash instance for the boolean type.
      • byteHash

        public static final Hash<java.lang.Byte> byteHash
        A hash instance for the byte type.
      • charHash

        public static final Hash<java.lang.Character> charHash
        A hash instance for the char type.
      • doubleHash

        public static final Hash<java.lang.Double> doubleHash
        A hash instance for the double type.
      • floatHash

        public static final Hash<java.lang.Float> floatHash
        A hash instance for the float type.
      • intHash

        public static final Hash<java.lang.Integer> intHash
        A hash instance for the int type.
      • longHash

        public static final Hash<java.lang.Long> longHash
        A hash instance for the long type.
      • shortHash

        public static final Hash<java.lang.Short> shortHash
        A hash instance for the short type.
      • bigintHash

        public static final Hash<java.math.BigInteger> bigintHash
        A hash instance for the BigInteger type.
      • bigdecimalHash

        public static final Hash<java.math.BigDecimal> bigdecimalHash
        A hash instance for the BigDecimal type.
      • naturalHash

        public static final Hash<Natural> naturalHash
        A hash instance for the Natural type.
      • stringHash

        public static final Hash<java.lang.String> stringHash
        A hash instance for the String type.
      • stringBufferHash

        public static final Hash<java.lang.StringBuffer> stringBufferHash
        A hash instance for the StringBuffer type.
      • stringBuilderHash

        public static final Hash<java.lang.StringBuilder> stringBuilderHash
        A hash instance for the StringBuilder type.
    • Constructor Detail

      • Hash

        private Hash​(F<A,​java.lang.Integer> f)
    • Method Detail

      • hash

        public int hash​(A a)
        Compute the hash of the given value.
        Parameters:
        a - The value to compute the hash value for.
        Returns:
        The hash value.
      • contramap

        public <B> Hash<B> contramap​(F<B,​A> g)
        Maps the given function across this hash as a contra-variant functor.
        Parameters:
        g - The function to map.
        Returns:
        A new hash.
      • hash

        public static <A> Hash<A> hash​(F<A,​java.lang.Integer> f)
        Construct a hash with the given hash function.
        Parameters:
        f - The function to construct the hash with.
        Returns:
        A hash that uses the given function.
      • anyHash

        public static <A> Hash<A> anyHash()
        A hash that uses Object.hashCode().
        Returns:
        A hash that uses Object.hashCode().
      • eitherHash

        public static <A,​B> Hash<Either<A,​B>> eitherHash​(Hash<A> ha,
                                                                     Hash<B> hb)
        A hash instance for the Either type.
        Parameters:
        ha - Hash the left side of Either.
        hb - Hash the right side of Either.
        Returns:
        A hash instance for the Either type.
      • either3Hash

        public static <A,​B,​C> Hash<Either3<A,​B,​C>> either3Hash​(Hash<A> ha,
                                                                                       Hash<B> hb,
                                                                                       Hash<C> hc)
      • resultHash

        public static <I,​A> Hash<Result<I,​A>> resultHash​(Hash<A> ha,
                                                                     Hash<I> hi)
        A hash instance for the Result type.
        Parameters:
        ha - Hash the Result value.
        hi - Hash the Result remainder.
        Returns:
        A hash instance for the Result type.
      • validationHash

        public static <A,​B> Hash<Validation<A,​B>> validationHash​(Hash<A> ha,
                                                                             Hash<B> hb)
        A hash instance for the Validation type.
        Parameters:
        ha - Hash the failing side of Validation.
        hb - Hash the succeeding side of Validation.
        Returns:
        A hash instance for the Validation type.
      • listHash

        public static <A> Hash<List<A>> listHash​(Hash<A> ha)
        A hash instance for the List type.
        Parameters:
        ha - A hash for the elements of the list.
        Returns:
        A hash instance for the List type.
      • nonEmptyListHash

        public static <A> Hash<NonEmptyList<A>> nonEmptyListHash​(Hash<A> ha)
        A hash instance for the NonEmptyList type.
        Parameters:
        ha - A hash for the elements of the non-empty list.
        Returns:
        A hash instance for the NonEmptyList type.
      • optionHash

        public static <A> Hash<Option<A>> optionHash​(Hash<A> ha)
        A hash instance for the Option type.
        Parameters:
        ha - A hash for the element of the optional value.
        Returns:
        A hash instance for the Option type.
      • seqHash

        public static <A> Hash<Seq<A>> seqHash​(Hash<A> h)
      • setHash

        public static <A> Hash<Set<A>> setHash​(Hash<A> h)
      • streamHash

        public static <A> Hash<Stream<A>> streamHash​(Hash<A> ha)
        A hash instance for the Stream type.
        Parameters:
        ha - A hash for the elements of the stream.
        Returns:
        A hash instance for the Stream type.
      • arrayHash

        public static <A> Hash<Array<A>> arrayHash​(Hash<A> ha)
        A hash instance for the Array type.
        Parameters:
        ha - A hash for the elements of the array.
        Returns:
        A hash instance for the Array type.
      • zipperHash

        public static <A> Hash<Zipper<A>> zipperHash​(Hash<A> ha)
        A hash instance for the Zipper type.
        Parameters:
        ha - A hash for the elements of the zipper.
        Returns:
        A hash instance for the Zipper type.
      • treeZipperHash

        public static <A> Hash<TreeZipper<A>> treeZipperHash​(Hash<A> ha)
        A hash instance for the TreeZipper type.
        Parameters:
        ha - A hash for the elements of the tree zipper.
        Returns:
        A hash instance for the TreeZipper type.
      • treeHash

        public static <A> Hash<Tree<A>> treeHash​(Hash<A> ha)
        A hash instance for the Tree type.
        Parameters:
        ha - A hash for the elements of the tree.
        Returns:
        A hash instance for the Tree type.
      • treeMapHash

        public static <K,​V> Hash<TreeMap<K,​V>> treeMapHash​(Hash<K> h,
                                                                       Hash<V> v)
      • p1Hash

        public static <A> Hash<P1<A>> p1Hash​(Hash<A> ha)
        A hash instance for a product-1.
        Parameters:
        ha - A hash for the first element of the product.
        Returns:
        A hash instance for a product-1.
      • p2Hash

        public static <A,​B> Hash<P2<A,​B>> p2Hash​(Hash<A> ha,
                                                             Hash<B> hb)
        A hash instance for a product-2.
        Parameters:
        ha - A hash for the first element of the product.
        hb - A hash for the second element of the product.
        Returns:
        A hash instance for a product-2.
      • p3Hash

        public static <A,​B,​C> Hash<P3<A,​B,​C>> p3Hash​(Hash<A> ha,
                                                                             Hash<B> hb,
                                                                             Hash<C> hc)
        A hash instance for a product-3.
        Parameters:
        ha - A hash for the first element of the product.
        hb - A hash for the second element of the product.
        hc - A hash for the third element of the product.
        Returns:
        A hash instance for a product-3.
      • p4Hash

        public static <A,​B,​C,​D> Hash<P4<A,​B,​C,​D>> p4Hash​(Hash<A> ha,
                                                                                             Hash<B> hb,
                                                                                             Hash<C> hc,
                                                                                             Hash<D> hd)
        A hash instance for a product-4.
        Parameters:
        ha - A hash for the first element of the product.
        hb - A hash for the second element of the product.
        hc - A hash for the third element of the product.
        hd - A hash for the fourth element of the product.
        Returns:
        A hash instance for a product-4.
      • p5Hash

        public static <A,​B,​C,​D,​E> Hash<P5<A,​B,​C,​D,​E>> p5Hash​(Hash<A> ha,
                                                                                                             Hash<B> hb,
                                                                                                             Hash<C> hc,
                                                                                                             Hash<D> hd,
                                                                                                             Hash<E> he)
        A hash instance for a product-5.
        Parameters:
        ha - A hash for the first element of the product.
        hb - A hash for the second element of the product.
        hc - A hash for the third element of the product.
        hd - A hash for the fourth element of the product.
        he - A hash for the fifth element of the product.
        Returns:
        A hash instance for a product-5.
      • p6Hash

        public static <A,​B,​C,​D,​E,​F$> Hash<P6<A,​B,​C,​D,​E,​F$>> p6Hash​(Hash<A> ha,
                                                                                                                               Hash<B> hb,
                                                                                                                               Hash<C> hc,
                                                                                                                               Hash<D> hd,
                                                                                                                               Hash<E> he,
                                                                                                                               Hash<F$> hf)
        A hash instance for a product-6.
        Parameters:
        ha - A hash for the first element of the product.
        hb - A hash for the second element of the product.
        hc - A hash for the third element of the product.
        hd - A hash for the fourth element of the product.
        he - A hash for the fifth element of the product.
        hf - A hash for the sixth element of the product.
        Returns:
        A hash instance for a product-6.
      • p7Hash

        public static <A,​B,​C,​D,​E,​F$,​G> Hash<P7<A,​B,​C,​D,​E,​F$,​G>> p7Hash​(Hash<A> ha,
                                                                                                                                               Hash<B> hb,
                                                                                                                                               Hash<C> hc,
                                                                                                                                               Hash<D> hd,
                                                                                                                                               Hash<E> he,
                                                                                                                                               Hash<F$> hf,
                                                                                                                                               Hash<G> hg)
        A hash instance for a product-7.
        Parameters:
        ha - A hash for the first element of the product.
        hb - A hash for the second element of the product.
        hc - A hash for the third element of the product.
        hd - A hash for the fourth element of the product.
        he - A hash for the fifth element of the product.
        hf - A hash for the sixth element of the product.
        hg - A hash for the seventh element of the product.
        Returns:
        A hash instance for a product-7.
      • p8Hash

        public static <A,​B,​C,​D,​E,​F$,​G,​H> Hash<P8<A,​B,​C,​D,​E,​F$,​G,​H>> p8Hash​(Hash<A> ha,
                                                                                                                                                               Hash<B> hb,
                                                                                                                                                               Hash<C> hc,
                                                                                                                                                               Hash<D> hd,
                                                                                                                                                               Hash<E> he,
                                                                                                                                                               Hash<F$> hf,
                                                                                                                                                               Hash<G> hg,
                                                                                                                                                               Hash<H> hh)
        A hash instance for a product-8.
        Parameters:
        ha - A hash for the first element of the product.
        hb - A hash for the second element of the product.
        hc - A hash for the third element of the product.
        hd - A hash for the fourth element of the product.
        he - A hash for the fifth element of the product.
        hf - A hash for the sixth element of the product.
        hg - A hash for the seventh element of the product.
        hh - A hash for the eighth element of the product.
        Returns:
        A hash instance for a product-8.
      • v2Hash

        public static <A> Hash<V2<A>> v2Hash​(Hash<A> ea)
        A hash instance for a vector-2.
        Parameters:
        ea - A hash for the elements of the vector.
        Returns:
        A hash instance for a vector-2.
      • v3Hash

        public static <A> Hash<V3<A>> v3Hash​(Hash<A> ea)
        A hash instance for a vector-3.
        Parameters:
        ea - A hash for the elements of the vector.
        Returns:
        A hash instance for a vector-3.
      • v4Hash

        public static <A> Hash<V4<A>> v4Hash​(Hash<A> ea)
        A hash instance for a vector-4.
        Parameters:
        ea - A hash for the elements of the vector.
        Returns:
        A hash instance for a vector-4.
      • v5Hash

        public static <A> Hash<V5<A>> v5Hash​(Hash<A> ea)
        A hash instance for a vector-5.
        Parameters:
        ea - A hash for the elements of the vector.
        Returns:
        A hash instance for a vector-5.
      • v6Hash

        public static <A> Hash<V6<A>> v6Hash​(Hash<A> ea)
        A hash instance for a vector-6.
        Parameters:
        ea - A hash for the elements of the vector.
        Returns:
        A hash instance for a vector-6.
      • v7Hash

        public static <A> Hash<V7<A>> v7Hash​(Hash<A> ea)
        A hash instance for a vector-7.
        Parameters:
        ea - A hash for the elements of the vector.
        Returns:
        A hash instance for a vector-7.
      • v8Hash

        public static <A> Hash<V8<A>> v8Hash​(Hash<A> ea)
        A hash instance for a vector-8.
        Parameters:
        ea - A hash for the elements of the vector.
        Returns:
        A hash instance for a vector-8.