public override int GetHashCode() => hashCode == 0 ? hashCode = FNV32.Hash <OrdA, A>(this.AsEnumerable()) : hashCode;
public override int GetHashCode() => hashCode == 0 ? hashCode = FNV32.Hash <HashableDefault <A>, A>(this) : hashCode;
public static int hash <HashA, A>(IEnumerable <A> xs) where HashA : struct, Hashable <A> => FNV32.Hash <HashA, A>(xs);
public override int GetHashCode() => FNV32.Next( From?.GetHashCode() ?? FNV32.OffsetBasis, To?.GetHashCode() ?? FNV32.OffsetBasis);
public static int hash <A>(IEnumerable <A> xs) => FNV32.Hash <HashableDefault <A>, A>(xs);