Package fj

Class Hash<A>

java.lang.Object
fj.Hash<A>

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

    • f

      private final F<A,Integer> f
    • booleanHash

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

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

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

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

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

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

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

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

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

      public static final Hash<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<String> stringHash
      A hash instance for the String type.
    • stringBufferHash

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

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

  • Method Details

    • 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,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.