Copyright Tony Morris 2008

This software is released under an open source BSD licence.

fj.pre
Class Hash<A>

java.lang.Object
  extended by fj.pre.Hash<A>

public final class Hash<A>
extends Object

Produces a hash code for an object which should attempt uniqueness.

Version:
2.19

Field Summary
static Hash<Boolean> booleanHash
          A hash instance for the boolean type.
static Hash<Byte> byteHash
          A hash instance for the byte type.
static Hash<Character> charHash
          A hash instance for the char type.
static Hash<Double> doubleHash
          A hash instance for the double type.
static Hash<Float> floatHash
          A hash instance for the float type.
static Hash<Integer> intHash
          A hash instance for the int type.
static Hash<Long> longHash
          A hash instance for the long type.
static Hash<Short> shortHash
          A hash instance for the short type.
static Hash<StringBuffer> stringBufferHash
          A hash instance for the StringBuffer type.
static Hash<StringBuilder> stringBuilderHash
          A hash instance for the StringBuilder type.
static Hash<String> stringHash
          A hash instance for the String type.
 
Method Summary
static
<A> Hash<A>
anyHash()
          A hash that uses Object.hashCode().
static
<A> Hash<Array<A>>
arrayHash(Hash<A> ha)
          A hash instance for the Array type.
<B> Hash<B>
comap(F<B,A> g)
          Maps the given function across this hash as a contra-variant functor.
static
<A,B> Hash<Either<A,B>>
eitherHash(Hash<A> ha, Hash<B> hb)
          A hash instance for the Either type.
 int hash(A a)
          Compute the hash of the given value.
static
<A> Hash<A>
hash(F<A,Integer> f)
          Construct a hash with the given hash function.
static
<A> Hash<List<A>>
listHash(Hash<A> ha)
          A hash instance for the List type.
static
<A> Hash<NonEmptyList<A>>
nonEmptyListHash(Hash<A> ha)
          A hash instance for the NonEmptyList type.
static
<A> Hash<Option<A>>
optionHash(Hash<A> ha)
          A hash instance for the Option type.
static
<A> Hash<P1<A>>
p1Hash(Hash<A> ha)
          A hash instance for a product-1.
static
<A,B> Hash<P2<A,B>>
p2Hash(Hash<A> ha, Hash<B> hb)
          A hash instance for a product-2.
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.
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.
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.
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.
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.
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.
static
<A> Hash<Stream<A>>
streamHash(Hash<A> ha)
          A hash instance for the Stream type.
static
<A> Hash<Tree<A>>
treeHash(Hash<A> ha)
          A hash instance for the Tree type.
static
<A> Hash<V2<A>>
v2Hash(Hash<A> ea)
          A hash instance for a vector-2.
static
<A> Hash<V3<A>>
v3Hash(Hash<A> ea)
          A hash instance for a vector-3.
static
<A> Hash<V4<A>>
v4Hash(Hash<A> ea)
          A hash instance for a vector-4.
static
<A> Hash<V5<A>>
v5Hash(Hash<A> ea)
          A hash instance for a vector-5.
static
<A> Hash<V6<A>>
v6Hash(Hash<A> ea)
          A hash instance for a vector-6.
static
<A> Hash<V7<A>>
v7Hash(Hash<A> ea)
          A hash instance for a vector-7.
static
<A> Hash<V8<A>>
v8Hash(Hash<A> ea)
          A hash instance for a vector-8.
static
<A,B> Hash<Validation<A,B>>
validationHash(Hash<A> ha, Hash<B> hb)
          A hash instance for the Validation type.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

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.


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.

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.

comap

public <B> Hash<B> comap(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.

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.

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.

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.

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.

Copyright Tony Morris 2008

This software is released under an open source BSD licence.