I copied the `hash`

function code from here:

And ran it under J1.7 but I get different results. Why?

Your second line - that should be:

`hash2(x::Any) = hash2(x, zero(UInt))`

?

Ok, let me rephrase that

I get the same

```
julia> hash2((1,2))
0xc04cd80fdd457cea
```

Still no clue why I don’t get that then:

```
hash2(x::Any) = hash2(x, zero(UInt))
hash2(@nospecialize(x), h::UInt) = Base.hash_uint(3h - objectid(x))
hash((1,2))==hash2((1,2))
```

Ah i saw you edited your post - OK good I’m not going crazy.

Anyone shed some light on this?

There’s a special hash function for tuples:

```
julia> @which hash((1,2), zero(UInt))
hash(t::Tuple, h::UInt64) in Base at tuple.jl:417
```

5 Likes

I even took hashing.jl, replaced all the `hash(`

with `hash2(`

and got the same result

`@which`

Everytime I post here I learn of a new helpful macro. Thanks!

1 Like