* alists
@ 2008-03-26 12:53 David Roderick
2008-03-27 4:57 ` alists Barry Margolin
0 siblings, 1 reply; 3+ messages in thread
From: David Roderick @ 2008-03-26 12:53 UTC (permalink / raw)
To: help-gnu-emacs
Elisp 5.8
-- Function: copy-alist alist
This function returns a two-level deep copy of ALIST: it creates a
new copy of each association, so that you can alter the
associations of the new alist without changing the old one.
(setq needles-per-cluster
'((2 . ("Austrian Pine" "Red Pine"))
(3 . ("Pitch Pine"))
(5 . ("White Pine"))))
=>
((2 "Austrian Pine" "Red Pine")
(3 "Pitch Pine")
(5 "White Pine"))
(setq copy (copy-alist needles-per-cluster))
=>
((2 "Austrian Pine" "Red Pine")
(3 "Pitch Pine")
(5 "White Pine"))
(eq needles-per-cluster copy)
=> nil
(equal needles-per-cluster copy)
=> t
(eq (car needles-per-cluster) (car copy))
=> nil
(cdr (car (cdr needles-per-cluster)))
=> ("Pitch Pine")
I don't understand how the cdr of one element in the alist in connected
with the next cons cell.
The first cons cell has a CDR of "Austrian Pine" "Red Pine".
In what way does this contain a reference to the next list (3.("Pitch
Pine"))?
Is there an outer level of a sequence happening?
Yes, an outer list.
So (2 . ("Austrian Pine" "Red Pine")) is actually the CAR of an outer
cons cell which has (3 . ("Pitch Pine")) as its CDR.
Is this correct?
2.3.6.2 Dotted Pair Notation
............................
In dotted pair
notation, the list `(1 2 3)' is written as `(1 . (2 . (3 . nil)))'
(car (cdr needles-per-cluster))
is (3 . ("Pitch Pine"))
ELISP can be HEAVY GOING
Elisp 5.3
-- Function: cdr cons-cell
This function returns the value referred to by the second slot of
the cons cell CONS-CELL. Expressed another way, this function
returns the CDR of CONS-CELL.
As a special case, if CONS-CELL is `nil', then `cdr' is defined to
return `nil'; therefore, any list is a valid argument for `cdr'.
An error is signaled if the argument is not a cons cell or `nil'.
(cdr '(a b c))
=> (b c)
(cdr '())
=> nil
--
from
David Roderick
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: alists
2008-03-26 12:53 alists David Roderick
@ 2008-03-27 4:57 ` Barry Margolin
2008-03-27 14:27 ` alists David Roderick
0 siblings, 1 reply; 3+ messages in thread
From: Barry Margolin @ 2008-03-27 4:57 UTC (permalink / raw)
To: help-gnu-emacs
In article <uwsnpk5nw.fsf@tiscali.co.uk>,
David Roderick <angel_ov_north@tiscali.co.uk> wrote:
> Elisp 5.8
> -- Function: copy-alist alist
> This function returns a two-level deep copy of ALIST: it creates a
> new copy of each association, so that you can alter the
> associations of the new alist without changing the old one.
>
> (setq needles-per-cluster
> '((2 . ("Austrian Pine" "Red Pine"))
> (3 . ("Pitch Pine"))
> (5 . ("White Pine"))))
> =>
> ((2 "Austrian Pine" "Red Pine")
> (3 "Pitch Pine")
> (5 "White Pine"))
>
> (setq copy (copy-alist needles-per-cluster))
> =>
> ((2 "Austrian Pine" "Red Pine")
> (3 "Pitch Pine")
> (5 "White Pine"))
>
> (eq needles-per-cluster copy)
> => nil
> (equal needles-per-cluster copy)
> => t
> (eq (car needles-per-cluster) (car copy))
> => nil
> (cdr (car (cdr needles-per-cluster)))
> => ("Pitch Pine")
>
> I don't understand how the cdr of one element in the alist in connected
> with the next cons cell.
> The first cons cell has a CDR of "Austrian Pine" "Red Pine".
> In what way does this contain a reference to the next list (3.("Pitch
> Pine"))?
> Is there an outer level of a sequence happening?
> Yes, an outer list.
> So (2 . ("Austrian Pine" "Red Pine")) is actually the CAR of an outer
> cons cell which has (3 . ("Pitch Pine")) as its CDR.
> Is this correct?
Correct. That outer cons cell is the alist itself. Its elements are
the individual associations.
>
> 2.3.6.2 Dotted Pair Notation
> ............................
> In dotted pair
> notation, the list `(1 2 3)' is written as `(1 . (2 . (3 . nil)))'
>
> (car (cdr needles-per-cluster))
> is (3 . ("Pitch Pine"))
Do you have a question here?
>
> ELISP can be HEAVY GOING
>
> Elisp 5.3
> -- Function: cdr cons-cell
> This function returns the value referred to by the second slot of
> the cons cell CONS-CELL. Expressed another way, this function
> returns the CDR of CONS-CELL.
>
> As a special case, if CONS-CELL is `nil', then `cdr' is defined to
> return `nil'; therefore, any list is a valid argument for `cdr'.
> An error is signaled if the argument is not a cons cell or `nil'.
>
> (cdr '(a b c))
> => (b c)
> (cdr '())
> => nil
Again, what's your question?
--
Barry Margolin, barmar@alum.mit.edu
Arlington, MA
*** PLEASE don't copy me on replies, I'll read them in the group ***
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2008-03-27 14:27 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-03-26 12:53 alists David Roderick
2008-03-27 4:57 ` alists Barry Margolin
2008-03-27 14:27 ` alists David Roderick
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).