[mew-dist 22278] Re: accelerating by-folder

Kazu Yamamoto ( 山本和彦 ) kazu at example.com
2002年 11月 14日 (木) 13:17:54 JST


From: KOIE Hidetaka (鯉江英隆) <hide at example.com>
Subject: [mew-dist 22273] Re: accelerating by-folder

> おもったよりも時間はかからないみたいです。
> 
> (let ((alist (make-list 2000 '("+foo/foo" . "foo")))
>       (case-fold-search nil))
>   (setq alist (nreverse (cons '("+FOO/foo" . "foo") alist)))
>   (string-match "[A-Z]"
>                 (mapconcat (lambda (x) (format "%s" (cdr x))) alist "")))

format() は不要でしょうね。あと、この方法では大きな文字列をたくさん作
るのでよくないと思います。

かなりトリッキーですが、以下のような方法ではどうでしょうか? mapcar は
組み込み関数ですが、うまく break しているようです。

(let ((alist (mew-local-folder-alist))
      (case-fold-search nil)
      found)
  (catch 'break
    (mapcar (lambda (x)
	      (cond
	       ((and (stringp (cdr x)) (string-match "[A-Z]" (cdr x)))
		(throw 'break (setq found (cdr x))))
	       ((and (stringp (car x)) (string-match "[A-Z]" (car x)))
		(throw 'break (setq found (car x))))))
	    alist))
  found)

--かず



Mew-dist メーリングリストの案内