Thank you for letting me know about this.<div><br></div><div>One of the things I feel strongly about, though, is avoiding names like dictionary-get.  Fhash's package is the kind where you're not supposed to do a "use".  You're supposed to get at the external symbols by using explicit package prefixes, so the dictionary- isn't there.</div>

<div><br></div><div>Anyway, I'll take a look at what you wrote.  Thanks again.</div><div><br></div><div>-- Dan</div><div><br><div class="gmail_quote">On Mon, Jun 13, 2011 at 9:52 PM, Pascal J. Bourguignon <span dir="ltr"><<a href="mailto:pjb@informatimago.com">pjb@informatimago.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div><div></div><div class="h5">Daniel Weinreb <<a href="mailto:dlw@google.com">dlw@google.com</a>> writes:<br>

<br>
> Friends,<br>
><br>
> I wrote a little package for "fash hash tables", which provide an<br>
> abstraction that is analogous to that of Common Lisp hash tables, but<br>
> is faster for tables with few elements, and only slightly inferior for<br>
> tables with many elements.<br>
><br>
> I did this because performance analysis showed that our system was<br>
> spending too much time in hash table operations, and using the new<br>
> package helped.<br>
><br>
> I have recently been cleaning this up, one reason being that I'd like<br>
> to open source it.  The function names used to be things like getfhash<br>
> and mapfhash.  Now they are like fhash:get and fhash:map-elements and<br>
> so on.<br>
><br>
> However, before I open-source it, I was to make sure it's "right".  It<br>
> recently occurred to me that the package name "fhash" has problems.<br>
><br>
> Here are pros and cons of changing it that I can see.<br>
><br>
> Pro: I's not a hash table in the small-cardinality case; it's a linear<br>
> lookup.  So the name is not actually accurate.<br>
><br>
> Pro: Calling such a data structure a "hash table", even as Common Lisp<br>
> does, is an abstraction violation.  Whether it works by hashing is an<br>
> implementation detail.  The Java collection library calls this a Map.<br>
> Python calls it a dictionary.  Clojure calls it a map.  Those are both<br>
> better names.<br>
><br>
> Con: Common Lisp already uses the name "hash table", so it would be<br>
> easier for existing Common Lisp programmers to see the analogy.<br>
><br>
> Advice?  Thanks!<br>
<br>
</div></div>Cesarum has an ADAPTATIVE-DICTIONARY abstraction that does that:<br>
<br>
<a href="https://gitorious.org/com-informatimago/com-informatimago/blobs/master/common-lisp/cesarum/dictionary.lisp" target="_blank">https://gitorious.org/com-informatimago/com-informatimago/blobs/master/common-lisp/cesarum/dictionary.lisp</a><br>


<br>
It uses hash-tables when it's fast, and faster data structure when<br>
hash-tables are slow (ie. when they don't have enough elements).<br>
<br>
<br>
--<br>
__Pascal Bourguignon__                     <a href="http://www.informatimago.com/" target="_blank">http://www.informatimago.com/</a><br>
A bad day in () is better than a good day in {}.<br>
<br>
<br>
_______________________________________________<br>
pro mailing list<br>
<a href="mailto:pro@common-lisp.net">pro@common-lisp.net</a><br>
<a href="http://lists.common-lisp.net/cgi-bin/mailman/listinfo/pro" target="_blank">http://lists.common-lisp.net/cgi-bin/mailman/listinfo/pro</a><br>
</blockquote></div><br></div>