Comments (2)
The combining function was good when we had a good hash function for integers. Unfortunately, the hash function got reverted back to the identity function, but the combining function remained the same as it had been :-(
from hashable.
The list instance is fixed by 4064b9f. The definition folds hashWithSalt
with an initial non-zero seed so the numbers of elements in the list matters:
ghci> hash ([] :: [Int])
-2578643520546668380
ghci> hash ([0] :: [Int])
839657738087498284
ghci> hash ([0, 0] :: [Int])
-7234408896634655932
We don't really care that tuples of different size (e.g. (0, 0)
and (0, 0, 0)
) hash to the same value, as the only way you end up using both instances simultaneously is if you use an existential wrapper type, in which case you're already in deep waters.
Aside: 0 is only a left identity of the current combine
implementation (which uses multiplication and xor), not a right identity.
from hashable.
Related Issues (20)
- Add instances for type(s) in Data.Array.Byte (base-4.17)
- Add instances for new types in `filepath`
- Support GHC 9.4 HOT 1
- Allow GHC-9.4? HOT 2
- Unable to compile on Mac M1 architecture HOT 2
- What's the deal with Fixed? HOT 1
- Hash unstable across executions HOT 6
- hashable doesn't compile in ghc 9.6.1-alpha3 HOT 1
- Hashable 1.4.2.0 fails to build on integer-simple GHC HOT 2
- better instance Hashable IntSet? HOT 5
- ( odd x && odd y) ==> hash (x,y) == hash (negate x, negate y ) HOT 10
- using Hashed inside a tuple produces collisions HOT 4
- Caching hash value sometimes leads to equal hashes for different inputs HOT 1
- Minor release 1.4.3.0 introduces semantic changes HOT 1
- Use fromThreadId HOT 1
- Allow containers-0.7 HOT 2
- GHC99 failed to build: perhaps need to add ‘os-string’ to the build-depends HOT 2
- hashable doesn't support filepath-1.5, ghc-9.10 will bump filepath to 1.5 HOT 3
- Could AES-NI instructions be used for better Int hashes? HOT 1
- Could AES-NI instructions be used for better Int hashes? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from hashable.