* association list bug? -- version 1.6.4
@ 2005-11-15 2:00 Jon Wilson
2005-11-15 5:01 ` Tomas Zerolo
0 siblings, 1 reply; 8+ messages in thread
From: Jon Wilson @ 2005-11-15 2:00 UTC (permalink / raw)
Hi y'all,
The following doesn't seem correct.
We have an association list defined such that:
(assoc '+ forms)
=>
(+ . "+")
But,
(assoc-ref '+ forms)
=>
#f
However, if we look at how assoc-ref is supposed to be defined
according to the guile manual
("http://www.gnu.org/software/guile/docs/guile-ref/Retrieving-Alist-Entries.html#Retrieving%20Alist%20Entries"),
we have
(let ((ent (assoc '+ forms)))
(and ent (cdr ent)))
=>
"+"
Is this a known bug with 1.6.4 and I just need to get off my duff and
upgrade?
What more information could I provide that might help diagnose this?
Regards,
Jon
_______________________________________________
Guile-user mailing list
Guile-user@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-user
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: association list bug? -- version 1.6.4
2005-11-15 2:00 association list bug? -- version 1.6.4 Jon Wilson
@ 2005-11-15 5:01 ` Tomas Zerolo
2005-11-15 16:49 ` Jon Wilson
0 siblings, 1 reply; 8+ messages in thread
From: Tomas Zerolo @ 2005-11-15 5:01 UTC (permalink / raw)
Cc: guile-user
[-- Attachment #1.1: Type: text/plain, Size: 491 bytes --]
On Mon, Nov 14, 2005 at 08:00:13PM -0600, Jon Wilson wrote:
> Hi y'all,
> The following doesn't seem correct.
> We have an association list defined such that:
>
> (assoc '+ forms)
> =>
> (+ . "+")
>
> But,
>
> (assoc-ref '+ forms)
> =>
> #f
Heh. The arguments are backwards. You want (assoc-ref forms '+)
Yeah, that has bitten others before you.
Consider vector-ref string-ref, list-ref, which take the vector,
string, list as first argument.
Regards
-- tomas
[-- Attachment #1.2: Digital signature --]
[-- 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] 8+ messages in thread
* Re: association list bug? -- version 1.6.4
2005-11-15 5:01 ` Tomas Zerolo
@ 2005-11-15 16:49 ` Jon Wilson
2005-11-15 17:21 ` Ludovic Courtès
0 siblings, 1 reply; 8+ messages in thread
From: Jon Wilson @ 2005-11-15 16:49 UTC (permalink / raw)
Hi Tomas,
> Heh. The arguments are backwards. You want (assoc-ref forms '+)
>
> Yeah, that has bitten others before you.
>
> Consider vector-ref string-ref, list-ref, which take the vector,
> string, list as first argument.
>
> Regards
> -- tomas
Thanks for pointing that out!
Hmmm, perhaps a special note needs to be included in the
documentation, since the argument order is exactly reversed from assoc
assv assq.
Or, perhaps in some future version, the argument order for assoc and
friends should be changed to match assoc-ref et al.
Regards,
Jon
_______________________________________________
Guile-user mailing list
Guile-user@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-user
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: association list bug? -- version 1.6.4
2005-11-15 16:49 ` Jon Wilson
@ 2005-11-15 17:21 ` Ludovic Courtès
2005-11-15 19:11 ` Jon Wilson
0 siblings, 1 reply; 8+ messages in thread
From: Ludovic Courtès @ 2005-11-15 17:21 UTC (permalink / raw)
Cc: guile-user
Hi,
Jon Wilson <j85wilson@fastmail.fm> writes:
> Or, perhaps in some future version, the argument order for assoc and
> friends should be changed to match assoc-ref et al.
This is clearly not possible because `assq' et al. are part of R5RS and
`assoc-ref' has been part of Guile for a very, very long time.
One just has to be very careful when reading the manual. ;-)
Thanks,
Ludovic.
_______________________________________________
Guile-user mailing list
Guile-user@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-user
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: association list bug? -- version 1.6.4
2005-11-15 17:21 ` Ludovic Courtès
@ 2005-11-15 19:11 ` Jon Wilson
2005-11-15 21:41 ` Kevin Ryde
2005-11-17 16:10 ` Thien-Thi Nguyen
0 siblings, 2 replies; 8+ messages in thread
From: Jon Wilson @ 2005-11-15 19:11 UTC (permalink / raw)
Hi Ludovic,
> This is clearly not possible because `assq' et al. are part of R5RS and
> `assoc-ref' has been part of Guile for a very, very long time.
Fair enough.
> One just has to be very careful when reading the manual. ;-)
The manual says
"Like assq, assv and assoc, except that only the value associated with
key in alist is returned."
which seems to suggest (incorrectly, obviously) that the arguments to
both assoc and assoc-ref should be the same. Perhaps, given that it
seems that a fairly large number of people have misread the manual and
gotten confused about this, it would be helpful to add a phrase
explicitly pointing out that the argument order is reversed. For example,
"Like assq, assv, and assoc (with argument order reversed), except
that only the value associated with key in alist is returned."
One shouldn't have to be quite so very careful when reading the manual.
Regards,
Jon
_______________________________________________
Guile-user mailing list
Guile-user@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-user
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: association list bug? -- version 1.6.4
2005-11-15 19:11 ` Jon Wilson
@ 2005-11-15 21:41 ` Kevin Ryde
2005-11-16 0:00 ` Jon Wilson
2005-11-17 16:10 ` Thien-Thi Nguyen
1 sibling, 1 reply; 8+ messages in thread
From: Kevin Ryde @ 2005-11-15 21:41 UTC (permalink / raw)
Cc: guile-user
Jon Wilson <j85wilson@fastmail.fm> writes:
>
> which seems to suggest (incorrectly, obviously) that the arguments to
> both assoc and assoc-ref should be the same. Perhaps, given that it
> seems that a fairly large number of people have misread the manual and
> gotten confused about this, it would be helpful to add a phrase
> explicitly pointing out that the argument order is reversed.
I'll change the section to something like below. Both shorter and
clearer I think.
5.6.11.3 Retrieving Alist Entries
.................................
`assq', `assv' and `assoc' find the entry in an alist for a given key,
and return the `(KEY . VALUE)' pair. `assq-ref', `assv-ref' and
`assoc-ref' do a similar lookup, but return just the VALUE.
-- Scheme Procedure: assq key alist
-- Scheme Procedure: assv key alist
-- Scheme Procedure: assoc key alist
-- C Function: scm_assq (key, alist)
-- C Function: scm_assv (key, alist)
-- C Function: scm_assoc (key, alist)
Return the first entry in ALIST with the given KEY. The return is
the pair `(KEY . VALUE)' from ALIST. If there's no matching entry
the return is `#f'.
`assq' compares keys with `eq?', `assv' uses `eqv?' and `assoc'
uses `equal?'.
-- Scheme Procedure: assq-ref alist key
-- Scheme Procedure: assv-ref alist key
-- Scheme Procedure: assoc-ref alist key
-- C Function: scm_assq_ref (alist, key)
-- C Function: scm_assv_ref (alist, key)
-- C Function: scm_assoc_ref (alist, key)
Return the value from the first entry in ALIST with the given KEY,
or `#f' if there's no such entry.
`assq-ref' compares keys with `eq?', `assv-ref' uses `eqv?' and
`assoc-ref' uses `equal?'.
Notice these functions have the KEY argument last, like other
`-ref' functions, but this is opposite to what what `assq' etc
above use.
When the return is `#f' it can be either KEY not found, or an
entry which happens to have value `#f' in the `cdr'. Use `assq'
etc above if you need to differentiate these cases.
_______________________________________________
Guile-user mailing list
Guile-user@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-user
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: association list bug? -- version 1.6.4
2005-11-15 21:41 ` Kevin Ryde
@ 2005-11-16 0:00 ` Jon Wilson
0 siblings, 0 replies; 8+ messages in thread
From: Jon Wilson @ 2005-11-16 0:00 UTC (permalink / raw)
Hi Kevin,
> I'll change the section to something like below. Both shorter and
> clearer I think.
Looks excellent to me!
Regards,
Jon
_______________________________________________
Guile-user mailing list
Guile-user@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-user
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: association list bug? -- version 1.6.4
2005-11-15 19:11 ` Jon Wilson
2005-11-15 21:41 ` Kevin Ryde
@ 2005-11-17 16:10 ` Thien-Thi Nguyen
1 sibling, 0 replies; 8+ messages in thread
From: Thien-Thi Nguyen @ 2005-11-17 16:10 UTC (permalink / raw)
Cc: guile-user
From: Jon Wilson <j85wilson@fastmail.fm>
Date: Tue, 15 Nov 2005 13:11:22 -0600
One shouldn't have to be quite so very careful
when reading the manual.
`read' is easy, `eval' is the tricky part...
thi
_______________________________________________
Guile-user mailing list
Guile-user@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-user
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2005-11-17 16:10 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-11-15 2:00 association list bug? -- version 1.6.4 Jon Wilson
2005-11-15 5:01 ` Tomas Zerolo
2005-11-15 16:49 ` Jon Wilson
2005-11-15 17:21 ` Ludovic Courtès
2005-11-15 19:11 ` Jon Wilson
2005-11-15 21:41 ` Kevin Ryde
2005-11-16 0:00 ` Jon Wilson
2005-11-17 16:10 ` Thien-Thi Nguyen
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).