About me

About me

Feeds

RSS feed

What use is 'mapcon'?

13th June 2024

I was recently reading about the map functions in Edmund Weitz's excellent book "Common Lisp Recipes". He gives this good summary of them:

  Gives no output Gives a list of return values Concatenates return values
Processes items mapc mapcar mapcan
Processes tails mapl maplist mapcon

It occurred to me that I've never used mapcon, so I asked on the LispWorks forum if anyone could suggest why you might want to use it. Martin Simmons pointed me to this nice example in the LispWorks documentation.

It uses mapcon in conjunction with mapcar to create a list of all pairs of a list of elements:

(defun pairs (lst)
  (mapcon
   (lambda (x)
     (mapcar 
      (lambda (y) (list (car x) y))
      (cdr x)))
   lst))

> (pairs '(a b c d e))
((a b) (a c) (a d) (a e) (b c) (b d) (b e) (c d) (c e) (d e))

Update

18th June 2024: For another use of mapcon that's just occurred to me see: Finding duplicates in a list.


blog comments powered by Disqus