This is the mail archive of the kawa@sourceware.org mailing list for the Kawa project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Hash tables


If I use (begin ...), only the last value will be output when I load
the servlet, so I use (values ...). I could have used html:div or
something. I'm more worried about the hash-table. To clarify:

I'm asking why, after calling hash-table-delete! on "53gqi", it
doesn't get deleted. I still get '() from hash-table-ref. I can delete
"6vxk4" fine.

Thanks,
-- Daniel


2008/1/16 Robert Miyashiro <robert@mercedsystems.com>:
> Sorry, I misread your email.  The (values) confuses me a bit.  Do you mean
> to use a (begin) there instead?
>
>
>
> On 1/16/08 10:08 AM, "Robert Miyashiro" <robert@mercedsystems.com> wrote:
>
> > The key 53gqi _does_ have a value, (cdr '("53gqi")) => '().  So, your
> > default doesn't get used.  The default is only used if there is no mapping
> > for the key at all:
> >
> > alist->hash-table alist [ equal? [ hash [ size-hint]]] → hash-table
> >
> >     Takes an association list alist and creates a hash table hash-table
> > which maps the car of every element in alist to the cdr of corresponding
> > elements in alist. The equal?, hash, and size-hint parameters are
> > interpreted as in make-hash-table. If some key occurs multiple times in
> > alist, the value in the first association will take precedence over later
> > ones. (Note: the choice of using cdr (instead of cadr) for values tries to
> > strike balance between the two approaches: using cadr would render this
> > procedure unusable for cdr alists, but not vice versa.)
> >
> >
> >
> > hash-table-ref hash-table key [ thunk ] → value
> >
> >     This procedure returns the value associated to key in hash-table. If no
> > value is associated to key and thunk is given, it is called with no
> > arguments and its value is returned; if thunk is not given, an error is
> > signalled. Given a good hash function, this operation should have an
> > (amortised) complexity of O(1) with respect to the number of associations in
> > hash-table.
> >
> > Function: hash-table-ref/default hash-table key default → value
> >
> >     Evaluates to the same value as (hash-table-ref hash-table key (lambda ()
> > default)). Given a good hash function, this operation should have an
> > (amortised) complexity of O(1) with respect to the number of associations in
> > hash-table.
> >
> >
> > 'robert
> >
> >
> > On 1/16/08 10:01 AM, "Daniel Terhorst" <daniel.s.terhorst@gmail.com> wrote:
> >
> >> I ran into some unexpected behavior with hash tables today, rather by
> >> coincidence, it seems. If I create a hash-table with two keys, "53gqi"
> >> and "6vxk4", I become unable to delete the first from the table. If I
> >> change the keys in any way or try to remove the second one first, it
> >> works as expected, so this seems to be due to some kind of collision.
> >> I wouldn't expect that to cause delete to no-op, however, so I suspect
> >> it's just a bug that hasn't been detected until now.
> >>
> >>
> >>
> >> ;; -*- scheme -*-
> >>
> >> (require 'srfi-69)
> >>
> >> (let ((H (alist->hash-table '(("53gqi")
> >>                               ("6vxk4"))))
> >>       (key "53gqi"))
> >>   (values (html:p (hash-table-ref H key))
> >>           (hash-table-delete! H key)
> >>           (html:p (hash-table-ref/default H key "GONE =)"))))
> >>
> >> #\newline
> >>
> >>
> >>
> >> ---
> >>
> >> Expected:
> >> ()
> >> GONE =)
> >>
> >>
> >> Actual:
> >> ()
> >> ()
> >
>
>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]