Why do you want to have multiple available implementations? I think
the overhead for always hashing is small enough. There are only two
reasons struct block allows hash tables or linked lists:
- overloading of the meaning of that list to represent a list of
function arguments, which is ordered
- warts in mdebugread that I was not patient enough to overcome when
I finally merged in hash table support
I suppose the first reason is a legitimate one for multiple
implementations; we could mark an environment as 'ordered'. Or we
could stop overloading the meaning of the list that way. I don't know
which is better.
Daniel's observation is correct. The last thing we need is something
totally overengineered. Is there any reason to not start out with a
very simple implementation and get it working first?