[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

autoloadなどlispについて



井上です。
# WEBアーカイブが検索できるようになったので、話題に応じてこまめにSubject
# を変えるのがよいかも。

Reiko TAKAHASHI <HFC03614@...> writes:

> (autoload 'mew "mew" nil t)
> (autoload 'mew-send "mew" nil t)
> (autoload 'mew-user-agent-compose "mew" nil t)
> 
> のように、'nil'と't'が両方入っているのがあるのですが、これは、どっちかを
> 削除して使ってということですか?

そうではありません。
autoloadはsetqとは違い、四つのパラメータを同時に与える決まりになっていま
す。
autoloadの機能としては、あるコマンドを使おうとしたときに自動的に指定された
ファイルを読み込んでそこからコマンド本体を読み込むというものです。このお
かげで、Meadowを起動しても、初めてM-x mewとするまでmewのプログラム本体
(mew.elcなど)はメモリーにロードされず、メモリーの無駄が生じにくくなりま
す。
パラメータの順番ですが、
一つ目が'mew-user-agentのような「コマンド名」(正しくは関数シンボル名で
すが一応目をつぶって)
二つ目がそのコマンドが入っているファイルの名前です。
三つ目と四つ目はちと難しいので気にしないでください。
# 三つ目はコマンドの説明文字列
# 四つ目はinteractive指定

結局は、プログラムをしない限り、おまじないと思っておいてください。

>  あと、両側に空白のある" . "と" ' "とどう違うのでしょうか?

おそらくこの"."とは
("name" . "Koichi INOUE")
のような場合のことだと思います。これはlispの書き方で、
(なんとか . かんとか)
でなんとかとかんとかを1組にした固まりを表します。
使い方は様々です。
mew-config-alistの中では、"name"と"Koichi INOUE"の関係を表現するのにこの
書き方を使っています。

(setq mew-config-alist
        "(("第一のケース名"
          ("パラメータの名前" . "パラメータの値")
          ("別のパラメータの名前" . "パラメータの値")) ;;第一のケース終り
          ) ;; ケースのリスト終わり
       )  ;; mew-config-alistを指定するsetqの終わり

という構造をしていますね。

"'"の説明をするには、lispの式の評価(実行)に関する基礎知識が必要になる
のでやめておきます。「その次の部分が即座に実行されないようにクオートす
る。」みたいな意味です。
「Aさん、卵を割ってとBさんに頼んでください」
といいたいとき、Aさんがいきなり卵を割ってしまわないように
「"卵を割って"とBさんに頼んでください。」
と書くのと同じようなものです。
lispで
(mew)
を評価(実行)するとmewが起動します。
これに対して、
'(mew)
は「mewを起動しなさいということ」という意味になります。
うまく説明できないのでこの辺で。(^^;)

-- 
                    Koichi Inoue, ARGV
                    E-Mail: inoue@...
                    ICQ UIN: 74900690