The review of std.hash package

David Nadlinger see at klickverbot.at
Thu Aug 9 02:59:47 PDT 2012


On Wednesday, 8 August 2012 at 19:27:54 UTC, Walter Bright wrote:
> The idea is to have hash act like a component - not with 
> special added code the user has to write.

Sorry, but I think this is a meaningless statement without 
specifying what kind of interface the component should adhere to. 
In my opinion, the proposed std.hash design would be a perfectly 
valid interface for »accumulate stuff and at some point get a 
result«-type components.

> In this case, it needs to work like a reduce algorithm, because 
> it is a reduce algorithm. Need to find a way to make this work.

Hash functions are _not_ analogous to reduce(), because the 
operation performed by reduce() is stateless, whereas hash 
functions generally have some internal state.

»Continuing« a reduce() operation by repeatedly calling it with 
the last partial result as the starting value is only possible 
because there is no additional state to carry over. To make this 
work with hashes, you'd have to return something encapsulating 
the internal state from your hash function. But then, you again 
need to obtain the actual result from that return value from that 
result somehow, which defeats the original intent of making it 
work like reduce – and incidentally is what finish() does.

David


More information about the Digitalmars-d mailing list