unofficial mirror of guile-user@gnu.org 
 help / color / mirror / Atom feed
* hash-get-handle and hash-ref redundant
@ 2007-06-29 20:49 Jon Wilson
  2007-06-30  3:16 ` Stephen Compall
  0 siblings, 1 reply; 3+ messages in thread
From: Jon Wilson @ 2007-06-29 20:49 UTC (permalink / raw)
  To: Guile Users

Hi,
The procedure hash-get-handle seems to be a less useful version of hash-ref.

guile> (help hash-get-handle )
`hash-get-handle' is a primitive procedure in the (guile) module.

 -- Scheme Procedure: hash-get-handle table key
     This procedure returns the `(key . value)' pair from the hash
     table TABLE.  If TABLE does not hold an associated value for KEY,
     `#f' is returned.  Uses `equal?' for equality testing.

guile> (help hash-ref)
`hash-ref' is a primitive procedure in the (guile) module.

 -- Scheme Procedure: hash-ref table key [dflt]
     Look up KEY in the hash table TABLE, and return the value (if any)
     associated with it.  If KEY is not found, return DEFAULT (or `#f'
     if no DEFAULT argument is supplied).  Uses `equal?' for equality
     testing.

Perhaps one is meant to be used only internally?  I'm guessing that 
hash-get-handle should not be visible.  If the developers concur, let's 
make this change before 1.8.2.
Regards,
Jon


_______________________________________________
Guile-user mailing list
Guile-user@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-user


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: hash-get-handle and hash-ref redundant
  2007-06-29 20:49 hash-get-handle and hash-ref redundant Jon Wilson
@ 2007-06-30  3:16 ` Stephen Compall
  2007-06-30  3:21   ` Jon Wilson
  0 siblings, 1 reply; 3+ messages in thread
From: Stephen Compall @ 2007-06-30  3:16 UTC (permalink / raw)
  To: Jon Wilson; +Cc: Guile Users


[-- Attachment #1.1: Type: text/plain, Size: 1635 bytes --]

On Fri, 2007-06-29 at 16:49 -0400, Jon Wilson wrote:
> The procedure hash-get-handle seems to be a less useful version of hash-ref.

Not exactly true:

guile> (define my-ht (make-hash-table))
guile> (hash-set! my-ht 'x 'y)
y
guile> (eq? (hash-get-handle my-ht 'x) (hash-get-handle my-ht 'x))
#t
guile> (set-cdr! (hash-get-handle my-ht 'x) 'z)
guile> (hash-ref my-ht 'x)
z

Their nature is explained in prose at the top of (guile)Hash Table
Reference.

> Perhaps one is meant to be used only internally?  I'm guessing that 
> hash-get-handle should not be visible.  If the developers concur, let's 
> make this change before 1.8.2.

You can use it either to cache HT lookups for faster writes, or use them
as variable bindings similarly to how traditional Smalltalk-80 systems
use Dictionary Associations to represent global and pool variables, or:

(define (make-hash-list)
  "Answer a hash-list, an HT that defaults all values to '() and
makes it easy to add values."
  (make-hash-table))

(define (hash-list-add! ht key item)
  (let ((assoc (hash-create-handle! ht key '())))
    (set-cdr! assoc (cons item (cdr assoc)))))

(define (hash-list-ref ht key)
  (hash-ref ht key '()))

;; I recently wrote a script that would have seriously benefited
;; in clarity from such a structure.

-- 
;;; Stephen Compall ** http://scompall.nocandysw.com/blog **
"Peta" is Greek for fifth; a petabyte is 10 to the fifth power, as
well as fifth in line after kilo, mega, giga, and tera.
  -- Lee Gomes, performing every Wednesday in his tech column
     "Portals" on page B1 of The Wall Street Journal

[-- Attachment #1.2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

[-- Attachment #2: Type: text/plain, Size: 140 bytes --]

_______________________________________________
Guile-user mailing list
Guile-user@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-user

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: hash-get-handle and hash-ref redundant
  2007-06-30  3:16 ` Stephen Compall
@ 2007-06-30  3:21   ` Jon Wilson
  0 siblings, 0 replies; 3+ messages in thread
From: Jon Wilson @ 2007-06-30  3:21 UTC (permalink / raw)
  To: Stephen Compall; +Cc: Guile Users

Stephen Compall wrote:
> Not exactly true:
>   

Right.  My bad.  Thank you for clarifying.
Regards,
Jon


_______________________________________________
Guile-user mailing list
Guile-user@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-user


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2007-06-30  3:21 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-06-29 20:49 hash-get-handle and hash-ref redundant Jon Wilson
2007-06-30  3:16 ` Stephen Compall
2007-06-30  3:21   ` Jon Wilson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).