hashNub package:witherable

Removes duplicate elements from a list, keeping only the first occurrence. This is usually faster than ordNub, especially for things that have a slow comparison (like String).
>>> hashNub [3,2,1,3,2,1]
[3,2,1]
The hashNubOn function behaves just like hashNub, except it uses a another type to determine equivalence classes.
>>> hashNubOn fst [(True, 'x'), (False, 'y'), (True, 'z')]
[(True,'x'),(False,'y')]