Next: , Previous: Calling Functions, Up: Functions   [Contents][Index]


11.6 ¥Þ¥Ã¥×´Ø¿ô

¥Þ¥Ã¥×´Ø¿ô¡Êmapping function¡Ë¤Ï¡¢ ¥ê¥¹¥È¤ä¾¤Î½¸¤Þ¤ê¤Î³ÆÍ×ÁǤ˻ØÄꤷ¤¿´Ø¿ô¤òŬÍѤ·¤Þ¤¹¡£ Emacs Lisp¤Ë¤Ï¤½¤Î¤è¤¦¤Ê´Ø¿ô¤¬¤¤¤¯¤Ä¤«¤¢¤ê¤Þ¤¹¡£ mapcar¤Èmapconcat¤Ï¥ê¥¹¥È¤òÁöºº¤¹¤ë¤â¤Î¤Ç¡¢¤³¤³¤ÇÀâÌÀ¤·¤Þ¤¹¡£ ¥ª¥Ö¥¸¥§¥¯¥ÈÇÛÎóobarrayÆâ¤Î¥·¥ó¥Ü¥ë¤Ë¤Ä¤¤¤Æ ¥Þ¥Ã¥×¤¹¤ë´Ø¿ômapatoms¤Ë¤Ä¤¤¤Æ¤Ï¡¢ See Creating Symbols¡£

¤³¤ì¤é¤Î¥Þ¥Ã¥×´Ø¿ô¤Ç¤Ï¡¢Ê¸»ú¥Æ¡¼¥Ö¥ë¤Ï°·¤¨¤Þ¤»¤ó¡£ ¤È¤¤¤¦¤Î¤Ï¡¢Ê¸»ú¥Æ¡¼¥Ö¥ë¤ÏÁ¤ÊÇÛÎó¤Ç¤¢¤ê¡¢¤½¤Îź»úÈϰϤâÈó¾ï¤ËÂ礭¤¤¤«¤é¤Ç¤¹¡£ ʸ»ú¥Æ¡¼¥Ö¥ë¤ÎÁ¤ÊÀ­¼Á¤ò¹Íθ¤·¤ÆÊ¸»ú¥Æ¡¼¥Ö¥ë¤Ë¤Ä¤¤¤Æ¥Þ¥Ã¥×¤¹¤ë¤Ë¤Ï¡¢ ´Ø¿ômap-char-table¡Êsee Char-Tables¡Ë¤ò»È¤¤¤Þ¤¹¡£

Function: mapcar function sequence

mapcar¤Ï¡¢sequence¤Î³ÆÍ×ÁǤ˽ç¤Ëfunction¤òŬÍѤ·¡¢ ·ë²Ì¤Î¥ê¥¹¥È¤òÊÖ¤¹¡£

°ú¿ôsequence¤Ïʸ»ú¥Æ¡¼¥Ö¥ë°Ê³°¤ÎǤ°Õ¤Î¼ïÎà¤Î¥·¡¼¥±¥ó¥¹¤Ç¤è¤¤¡£ ¤Ä¤Þ¤ê¡¢¥ê¥¹¥È¡¢¥Ù¥¯¥È¥ë¡¢¥Ö¡¼¥ë¥Ù¥¯¥È¥ë¡¢¤¢¤ë¤¤¤Ï¡¢Ê¸»úÎó¤Ç¤¢¤ë¡£ ·ë²Ì¤Ï¤Ä¤Í¤Ë¥ê¥¹¥È¤Ç¤¢¤ë¡£ ·ë²Ì¤ÎŤµ¤Ïsequence¤ÎŤµ¤ÈƱ¤¸¤Ç¤¢¤ë¡£

¤¿¤È¤¨¤Ð¡¢¤Ä¤®¤Î¤È¤ª¤ê¡£
(mapcar 'car '((a b) (c d) (e f)))
     ⇒ (a c e)
(mapcar '1+ [1 2 3])
     ⇒ (2 3 4)
(mapcar 'char-to-string "abc")
     ⇒ ("a" "b" "c")
;; my-hooks¤Î³Æ´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹
(mapcar 'funcall my-hooks)
(defun mapcar* (function &rest args)
  "Apply FUNCTION to successive cars of all ARGS.
Return the list of results."
  ;; ¥ê¥¹¥È¤ò¤Ä¤¯¤·¤Æ¤¤¤Ê¤±¤ì¤Ð
  (if (not (memq 'nil args))              
      ;; CAR¤Ë´Ø¿ô¤òŬÍѤ¹¤ë
      (cons (apply function (mapcar 'car args))  
            (apply 'mapcar* function             
                   ;; Recurse for rest of elements.
                   (mapcar 'cdr args)))))
(mapcar* 'cons '(a b c) '(1 2 3 4))
     ⇒ ((a . 1) (b . 2) (c . 3))
Function: mapconcat function sequence separator

mapconcat¤Ï¡¢sequence¤Î³ÆÍ×ÁǤËfunction¤òŬÍѤ¹¤ë¡£ ¤½¤ì¤é¤Î·ë²Ì¤Ï¡¢Ê¸»úÎó¤Ç¤¢¤ëɬÍפ¬¤¢¤ê¡¢Ï¢·ë¤µ¤ì¤ë¡£ mapconcat¤Ï¡¢·ë²Ì¤Îʸ»úÎó¤Î¤¢¤¤¤À¤Ëʸ»úÎóseparator¤òÁÞÆþ¤¹¤ë¡£ ÉáÄÌ¡¢separator¤Ï¡¢¶õÇò¤ä¥³¥ó¥Þ¡¢¤½¤Î¾¤Î¶çÆÉÅÀ¤ò´Þ¤à¡£

°ú¿ôfunction¤Ï¡¢°ú¿ô¤ò1¤Ä¼è¤ë´Ø¿ô¤Ç¤¢¤ê¡¢ ʸ»úÎó¤òÊÖ¤¹É¬Íפ¬¤¢¤ë¡£ °ú¿ôsequence¤Ï¡¢Ê¸»ú¥Æ¡¼¥Ö¥ë°Ê³°¤ÎǤ°Õ¤Î¼ïÎà¤Î¥·¡¼¥±¥ó¥¹¤Ç¤è¤¤¡£ ¤Ä¤Þ¤ê¡¢¥ê¥¹¥È¡¢¥Ù¥¯¥È¥ë¡¢¥Ö¡¼¥ë¥Ù¥¯¥È¥ë¡¢¤¢¤ë¤¤¤Ï¡¢Ê¸»úÎó¤Ç¤¢¤ë¡£

(mapconcat 'symbol-name
           '(The cat in the hat)
           " ")
     ⇒ "The cat in the hat"
(mapconcat (function (lambda (x) (format "%c" (1+ x))))
           "HAL-8000"
           "")
     ⇒ "IBM.9111"