2008年5月19日

[mew-dist 28422] 関数の構造化

山本です。

たとえば、Scheme では、関数の中に関数を定義できます。

(define (boo i)
(define (foo)
(set! i (+ i 1)))
(define (woo)

(set! i (- i 1))))

このおかげで、内部の関数で変数を共有でき、コードを簡潔かつ明瞭に
記述できることがあります。(つまり、関数をクラスのように使える。)

Emacs Lisp では、関数の中に関数を定義する一般的な方法はありません。その
ため、Emacs Lisp の関数は、モノシリックになりがちで、大変読みにくく、拡
張性も低いです。

この問題を長年考えていたのですが、ついに関数の中に関数を定義する方法と
同じ効果が得られる方法を見つけましたので、さっそくモノシリックだった
mew-addrstr-parse-syntax-list に適応し commit しました。興味がある人は、
コードを覗いて見て下さい。

かなりテストをしたつもりですが、バグが紛れ込んだかもしれません。この関
数はメールのヘッダからアドレスを切り出すという、重要な役割を果たしてい
ますので、バグがあった場合 Mew に大きな影響を与えます。おかしい場合は
元に戻しますので、何か変だと感じたら教えて下さい。

--かず

投稿者 xml-rpc : 2008年5月19日 10:24
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/73267
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。