Flexible and efficient recursive hashing

Sean Kelly via Digitalmars-d digitalmars-d at puremagic.com
Wed Sep 17 12:18:04 PDT 2014


On Tuesday, 16 September 2014 at 14:53:52 UTC, bearophile wrote:
> Among the CppCon 2014 slide packs there is this nice one:
>
> "Types Don't Know #", by Howard Hinnant:
>
> https://github.com/CppCon/CppCon2014/tree/master/Presentations/Types%20Don%27t%20Know%20%23%20-%20Howard%20Hinnant%20-%20CppCon%202014
>
> It shows a nice idea to perform transitive hashing in a 
> flexible and efficient way. Perhaps the idea can be used in D 
> too. It suggests the introduction of a hashAppend standard 
> method.

Yes, I've never understood why std::hash was designed the way it
is.  Or why allowing the user to supply a seed value seems to be
unusual for publicly available hash routines (which is basically
what Howard has proposed).  rt.util.hash.hashOf accepts a seed
value, and any hash routine we made publicly callable should as
well.  Not to do so is really pretty useless.

I guess this also has implications for composite types in D.  If
I have a class that references other classes, I might want to do
the same basic thing.  In which case, calling Object.toHash isn't
sufficient as it fails in the same manner.  I suppose we really
need to extend toHash to accept an optional seed value as well.


More information about the Digitalmars-d mailing list