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

Lisp <Re: weather



 高橋です。

 近所のおいしいパン屋さんに「コーヒーブレッド」なる新作らしきものがあっ
たので、興味津々で買ってきたのですが、苦いんです〜!(ToT) さっき食べたの
に、紅茶も飲んだのに、ああ、まだ苦い……。これが「おとなの味」なんでしょ
うか。


Reply Mitsugu SAKAMOTO <mitsugu@...>'s message:

} それと、わからないときは
} M-: (setq debug-on-error t) ret
} しませう。
} あ、でも、この*backtrace*バッファの読み方が私はまだわかりません。

 そういえば、これ、以前weather.elで、井上さんの指示に従って一度やったよ
うな気もします。違ったかな。

} ftp://ftp.ascii.co.jp/pub/GNU/emacs-lisp-intro-jp.texi.gz
} を拾ってきて読みましょう。きっと知識が深まると思いますよ。

 拾ってきました。
でも……、このファイル、どうやって読むのが妥当なんでしょう?
まず、.gzって書いてあったのに、そのままエディタで開けてしまいました。
で、わけわかめな文字列が山ほどあったので、ひとまず'@'で始まる行とか'\'の
入った行なんかをまとめて削除して、周囲に空白のある'%'を無くしたら、なんと
なく読める形になったのですが、必要な行まで捨ててるんじゃないかと心配です。

texiって、「テフ」とか言われている形式でしたっけ……???


Reply Koichi INOUE <inoue@...>'s message:

} 本当は浅いところから深いところへ向かいながら、同じ深さのところでは左か
} ら右へ処理していくようです。ただし、左から右へ処理している途中でもっと
} 深いところがあったらまずそっちをやって、その「結果」があれば結果の方が
} そこにあったと思ってまた右へ進み始める、みたいな。

 n高橋さんが書いてくださった解説と↑で、すごくよくわかりました(のつもり
です)。「式」というより、functionって考えるといいんですよね??(違うか
な。実は、functionってなに?って逆に訊かれちゃったら私は答えられそうにな
いので)。

} ただし、見かけると思いますが(progn ...) とか(save-excursion ...) とか
} (lambda () ...)とかの中身では、この「結果」は一番右にあったものだけが
} 外に影響します。

 ううん、わかりません……。
(save-excursion ...)の「結果」って、「その直前(?)の位置へカーソルを戻す」
ですよね??
「一番右にあったものだけが外に影響する」って、どういう意味ですか?

} >  でもでも、これってメールを送ってしまう直前(もう後戻りはできない状態)
} > でお天気を入れることになっていますよね? なぜ現在位置を保存しなければな
} > らないのでしょう……?
} 
} もしかしたらsave-excursionは不要なのかも知れません。ただ、この処理の前
} 後でバッファに対する影響を「お天気: ...」以外に残したくなかったのでこ
} うしました。その後でMewがどういう処理をするのか調べなかったので。

 なるほど! たしかに、そうしておいたほうが気持ちいいですね。

} > いろいろな種類の括弧があったらもう少し楽そうなのに……。
} 
} それだと、後から改造するときに一段深くするとかがとても大変な気がします。

 うわっ、ほんと、そうですね。
読むときのことばかり考えていて、書くときの都合を忘れていました(^^;;;)。

} 上の記述ではDOSのコマンドとかオプションとかにたとえて書きましたが、
} 正しくは、こういう+ や*、あるいはweather-from-httpみたいなものを「関
} 数」と言って、関数の中でinteractive指定があるものを「コマンド」とも呼
} びます。

 つまり、ユーザがキーボードから入れられるようになっているものが「コマン
ド」で、プログラムの中で勝手にいろいろ動く(?)のが「関数」ということですね
??

} として、「Emacsの中にある変数や関数の名前の中で、mew-なになに-hookとい
} う名前のものを全部リスト」させてから、それらしいものを探しました。

 変数や関数にわかりやすい名前を付けることって大切なんですね。

} (format "猫%s 犬%s 亀%s" "1" "2" "3")
} という関数の結果は"猫1 犬2 亀3"になります。これで何となく分かるでしょうか。

 はい、なんとなくわかりました。それぞれの「穴」に独自の「名前」があるの
ではなくて、「順番」に処理(?)されるんですね。

} > 今度は、以前作ってくださった"unfold-region"コマンド(でしたっけ?)を見て
} > みようかなと思うのですが、難しいですか?
} 
} どんなのだったか忘れました。もうちょっと複雑だったはず。
} ちなみに、関数の説明を見たい場合は、
} C-h f 関数の名前 RET
} で出ます。

 ……unfold-region、まだ見てません。今夜にでも……。


Reply TAKAHASHI Naoto <ntakahas@...>'s message:

} 1. (insert -- よしよし、挿入命令だな。次に来るものを挿入してやろう。
} 2. (format -- なんだ、別の関数か。それじゃあまずこいつを実行しなきゃ。
} 3. "お天気: %s" -- 「お天気: 」の後に、この次のものを代入するんだな。
} 4. (weather-from-http -- げ、また関数かよ。3の代入は一旦中断だ。
} 5. "東京地方" -- よし、これを引数として weather-from-http を実行だ。
} 6. なになに、実行結果は「雨でおじゃる」か。ではこれが4の結果だ。
} 7. つーことは3の %s には "雨でおじゃる" を入れればいいってことだ。
} 8. となると2の format の結果は "お天気: 雨でおじゃる" だな。
} 9. やっと1に戻ってきた。つまり "お天気: 雨でおじゃる" を挿入するわけね。

 これ、ほんとうにものすごくわかりやすかったです!
Lispさんがちょっぴり身近になった気がしました。
しばらく(?)は、こんなふうに考えながらLispを読んでみようと思います。
ありがとうございました。


**-***-***-***-***-***-***-***-***-***-***-***-**
           Reiko TAKAHASHI  (高橋玲子)
         E-mail:  HFC03614@...
         ICQ UIN: 85924121  (Twinkle)
**-***-***-***-***-***-***-***-***-***-***-***-**