all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* adding a string to every element in a list
@ 2008-11-17  5:51 Matt Price
  2008-11-17  6:06 ` Matthew Flaschen
  2008-11-17  6:54 ` Drew Adams
  0 siblings, 2 replies; 5+ messages in thread
From: Matt Price @ 2008-11-17  5:51 UTC (permalink / raw)
  To: help-gnu-emacs

hi,

it's not obvious to me how i would do something as simple as iterating
through the elements of a list, modifying each element in hte same way.
so in python i would have a list:

mylist = ["a" "silly" "list"]
for element in mylist:
	element += ADD
and the new list would be ["aADD" "sillyADD" "listADD"]

i'm making a list of vcards from a string containing many vcards:
(let 
((matches (split-string (shell-command-to-string 
                 (concat "/home/matt/mutt-eds-query "  namestring)) "^END:VCARD" t)))))
but unfortunately i need to retain the seperator string, so i want to
iterate over each element of the list, changing each element.  i have no
doubt this is trivial in lisp, but my documentation searches always take
me back to cons, car, and cdr, which don't seem like the easiest tools
for this task, though maybe it's just that i don't really understan
recursion... 

thanks again,
matt


-- 
Matt Price
matt.price@utoronto.ca




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

* Re: adding a string to every element in a list
  2008-11-17  5:51 adding a string to every element in a list Matt Price
@ 2008-11-17  6:06 ` Matthew Flaschen
  2008-11-18 18:03   ` Matt Price
  2008-11-17  6:54 ` Drew Adams
  1 sibling, 1 reply; 5+ messages in thread
From: Matthew Flaschen @ 2008-11-17  6:06 UTC (permalink / raw)
  To: Matt Price, emacs

Matt Price wrote:
> i have no doubt this is trivial in lisp, but my documentation searches always take
> me back to cons, car, and cdr, which don't seem like the easiest tools
> for this task, though maybe it's just that i don't really understan
> recursion... 

Just use mapcar, and it will handle the recursion:

(setq list (list "dog" "cat" "fish"));
(mapcar (lambda (arg) (concat arg "food")) list)

Matt Flaschen




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

* RE: adding a string to every element in a list
  2008-11-17  5:51 adding a string to every element in a list Matt Price
  2008-11-17  6:06 ` Matthew Flaschen
@ 2008-11-17  6:54 ` Drew Adams
  1 sibling, 0 replies; 5+ messages in thread
From: Drew Adams @ 2008-11-17  6:54 UTC (permalink / raw)
  To: 'Matt Price', 'help-gnu-emacs'

> it's not obvious to me how i would do something as simple as iterating
> through the elements of a list, modifying each element in hte 
> same way. mylist = ["a" "silly" "list"]
> and the new list would be ["aADD" "sillyADD" "listADD"]

C-h f mapcar





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

* Re: adding a string to every element in a list
  2008-11-17  6:06 ` Matthew Flaschen
@ 2008-11-18 18:03   ` Matt Price
  2008-11-18 18:16     ` Drew Adams
  0 siblings, 1 reply; 5+ messages in thread
From: Matt Price @ 2008-11-18 18:03 UTC (permalink / raw)
  To: Matthew Flaschen; +Cc: emacs

thanks matt,

i don't know why this didn't occur to me -- i was hung up on modifying
the original list, i guess, not thinking i could just create a new one.

anyway thanks to you and to drew, who also replied.

matt


On Mon, 2008-11-17 at 01:06 -0500, Matthew Flaschen wrote:
> Matt Price wrote:
> > i have no doubt this is trivial in lisp, but my documentation searches always take
> > me back to cons, car, and cdr, which don't seem like the easiest tools
> > for this task, though maybe it's just that i don't really understan
> > recursion... 
> 
> Just use mapcar, and it will handle the recursion:
> 
> (setq list (list "dog" "cat" "fish"));
> (mapcar (lambda (arg) (concat arg "food")) list)
> 
> Matt Flaschen
-- 
Matt Price
matt.price@utoronto.ca




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

* RE: adding a string to every element in a list
  2008-11-18 18:03   ` Matt Price
@ 2008-11-18 18:16     ` Drew Adams
  0 siblings, 0 replies; 5+ messages in thread
From: Drew Adams @ 2008-11-18 18:16 UTC (permalink / raw)
  To: 'Matt Price', 'Matthew Flaschen'; +Cc: 'emacs'

> i don't know why this didn't occur to me -- i was hung up on modifying
> the original list, i guess, not thinking i could just create 
> a new one.

All of the mapping functions are good to know, as is `dolist'.

In general, don't even think about modifying list structure.
When you really need to do that, you will know it. ;-)

See the discussion here about list modification, in thread "Adding
Lists/Sequences" (2008-09):
http://lists.gnu.org/archive/html/help-gnu-emacs/2008-09/msg00809.html





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

end of thread, other threads:[~2008-11-18 18:16 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-11-17  5:51 adding a string to every element in a list Matt Price
2008-11-17  6:06 ` Matthew Flaschen
2008-11-18 18:03   ` Matt Price
2008-11-18 18:16     ` Drew Adams
2008-11-17  6:54 ` Drew Adams

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.