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

Re: [bep] weather



井上です。

Reiko TAKAHASHI <HFC03614@...> (高橋玲子) writes:

> } # さて、これを読んで理解してみましょう(笑)
> 
>  謎解きみたいでおもしろいのでやってみました。

まず、基礎知識として、
lispでは
(コマンド オプション)
(コマンド オプション1 オプション2)
のような書き方をします。このとき、改行は関係ありません。ですから、今回
簡単っぽい例でいうと、
(+ 1 (* 2 3 ))
はいわゆる算数の1+2*3と同じです。

書いた内容は実は大きく見るとたった二つの()の組です。
一つは送信前にweatherを挿入するフック設定
もうひとつはカーソル位置にweatherを挿入するコマンド
です。

> 
> } (add-hook 'mew-make-message-hook
> 
>  Mewでメッセージを作ること。でも、卵はまだ割らないでね。

フックといって、プログラムが特定の状況になったときにユーザが設定して使
えるようなポイントがいくつか用意されていて、その内の「Mewがメッセージ
を送信前に最終整形する前」で呼ばれるフックに設定を追加しています。
本当はもっと別の、たとえばsignatureを挿入したときとかがあるとよかった
のですが見あたらなかったので。

> } 	  (function (lambda ()
> 
>  ???(ランバダっていうダンスはあるけど……)

ここから(functionに対応する徒事括弧までは、add-hookを書くときの一連の
おまじないと思うのが最初は楽です。lambdaはいわゆる「ラムダ」なのですが、
lispでは特別の意味があるらしい・・・

> } 		      (save-excursion
> 
>  今日は雨でも、明日は晴れるかもしれないので、遠足は明日までとっておこう

坂本さんが書いてくれたように、この括弧が閉じるまでの間、それまでのカー
ソル一とかの情報を保存して置いて後から戻してくださいという意味です。

> } 			(goto-char (point-max))
> 
>  もしかして、書かれている文字の一番最後のところへ行ってねっていうことで
> すか……?

正解です。(goto-char 3)とかすると最初から3文字目に行きます。
(point-max)のという関数の結果はバッファの最後の文字の最初からの文字数
です。

> } 			(insert
> } 			 (format "お天気: %s"
> } 				 (weather-from-http "東京地方")))
> 
>  おかださんが作ってくださった"weather-from-http"というコマンドを実行して、
> 「東京地方」のお天気を取得して、「お天気: 晴」とか「お天気: 曇後雨」とか、
> そういう文字列にして、insertしてねっていうこと……?

ここはN高橋さんのかっこいい説明の通り。

> } (defun weather-insert-here ()
> 
>  "weather-insert-here"というコマンドを作ります、と言っている……?

そうです。defunの前の"("に対応する")"(実は最後)までがコマンドの定義です。

> }   (interactive)
> 
>  これは全然わかりません。井上さんの説明から推測すると、「カーソル位置に」
> の部分でしょうか?

これは、M-x で実行できるコマンドにしなさいという意味の指定です。(実は
もっと深いのですが)
(interactive)がないとlispプログラムの中でしか使えません。

> }   (insert (weather-from-http)))
> 
>  "weather-from-http"コマンドの結果をinsertする……んですよね?
> ここに「東京地方」がなくても済むのはなぜですか?

手抜きです。必要かも知れません。

>  それから、中になにもないかっこはどういう意味をもっているんでしょう?
> たとえば、
> function (lambda ()
> とか
> (defun weather-insert-here ()
> みたいに(ああ釣り合ってない! へんな抜き書きですみません。)

defunの方については、これから作ろうとしているコマンドが引数(オプション
みたいなもの)を必要としないことを示します。もしオプションが必要ならこ
こに名前が入りますが今は説明しません。

lambda()の方は実はよく分かってません。(^^;)

いきなりにしてはなかなかの推測だと思います。
さて、今もう一度眺めるとどうでしょう??
 
-- 
                    Koichi Inoue, ARGV
                    E-Mail: inoue@...
                    ICQ UIN: 74900690