[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [bep] weather
- To: bep@argv.org
- Subject: Re: [bep] weather
- From: Reiko TAKAHASHI <HFC03614@nifty.ne.jp> (高橋玲子)
- Date: Wed, 23 May 2001 07:23:45 +0900
- Delivered-To: mailing list bep@argv.org
- Mailing-List: contact bep-help@argv.org; run by ezmlm
高橋玲子@ちょっと長いです。
Lispの解説をありがとうございます。
ひとつ、わかりきったことだったのかもしれないけれど、とても大切なことに気
づきました。
Lispって、DOSのバッチファイルみたいに上(の左側)から順にコマンドを処理し
ていくのではなくて、ちょうど算数の数式のように、括弧を見ながら、いちばん
深い(?)ところから順に処理していく……んですね??! だからこそ、「静かな
湖畔」状態になってしまうんだということに、今になって気づきました。
私が「順番が不思議」とこだわっていたのも、括弧の役割が全然解っていなかっ
たからなんです。
もし、同じ深さの括弧がいくつも出てくる場合には、上(の左)から順に処理さ
れていくと考えていいですか?
Reply Mitsugu SAKAMOTO <mitsugu@...>'s message:
} > } (save-excursion
} >
} > 今日は雨でも、明日は晴れるかもしれないので、遠足は明日までとっておこう
} > ……じゃなくて、わかりません。
}
} 後で戻ってこれるように現在位置を保存して。
でもでも、これってメールを送ってしまう直前(もう後戻りはできない状態)
でお天気を入れることになっていますよね? なぜ現在位置を保存しなければな
らないのでしょう……?
} > せたりとか細かいこと)が苦手です。だから爆発させちゃうと思う。
}
} M-x load-file
} してelispのファイルを読み込んだら「かーん」って言われます。
ちゃんとエラーチェックしてくれるんだということですね? 「かーん」だけ
じゃなくて、どこがおかしいのかを教えてもらえる方法ってありますか?
Reply TAKAHASHI Naoto <ntakahas@...>'s message:
} これに and と関係代名詞節の範囲がはっきりするよう括弧を付けると
}
} INSERT the result of
} (
} the FORMAT function whose arguments are
} "お天気: %s"
} and
} (the result of the WEATHER-FROM-HTTP function
} whose argument is "東京地方".)
} )
元のLispでは、"the result of the WEATHER-FROM-HTTP function ..."の部分
をいちばん初めにしなければならないので、そこに括弧が付いていると考えてい
いですか?
(insert
(format "お天気: %s"
(weather-from-http "東京地方")))
} なにしろ Lisp は lots of insane stupid parentheses の略だという話もあ
} るくらいですから。
……そう言いたくなる気持ち、すでにわかる気がします。
いろいろな種類の括弧があったらもう少し楽そうなのに……。
} あと、Lisp の歌というのもありました。「静かな湖畔の森のかげから」で始
} まるやつです。なんでこれが Lisp の歌なのかは、最後まで歌ってみるとわか
} ります。
輪唱で歌うと、さらにリアル!?
Reply Mitsugu SAKAMOTO <mitsugu@...>'s message:
} > } (interactive)
} >
} > これは全然わかりません。井上さんの説明から推測すると、「カーソル位置に」
} > の部分でしょうか?
}
} weather-insert-hereという引数の無い関数を作るのですが、interactivな関数
} (ユーザがM-x hogehogeとかで実行できるように)な関数を定義します。
"interactive"の意味をすなおに考えればよかったんですね。
Reply Koichi INOUE <inoue@...>'s message:
} まず、基礎知識として、
} lispでは
} (コマンド オプション)
} (コマンド オプション1 オプション2)
} のような書き方をします。このとき、改行は関係ありません。ですから、今回
} 簡単っぽい例でいうと、
} (+ 1 (* 2 3 ))
} はいわゆる算数の1+2*3と同じです。
↑の「コマンド」は+や*(足しましょうとか、かけましょうとか)で、「オプ
ション」が数字、ということですね。
} フックといって、プログラムが特定の状況になったときにユーザが設定して使
} えるようなポイントがいくつか用意されていて、その内の「Mewがメッセージ
} を送信前に最終整形する前」で呼ばれるフックに設定を追加しています。
} 本当はもっと別の、たとえばsignatureを挿入したときとかがあるとよかった
} のですが見あたらなかったので。
そういうフックが「見あたる」場所ってどこなんですか?(どこへ探しに行っ
てきたの?……)
} > } (insert
} > } (format "お天気: %s"
} > } (weather-from-http "東京地方")))
} >
} > おかださんが作ってくださった"weather-from-http"というコマンドを実行して、
} > 「東京地方」のお天気を取得して、「お天気: 晴」とか「お天気: 曇後雨」とか、
} > そういう文字列にして、insertしてねっていうこと……?
}
} ここはN高橋さんのかっこいい説明の通り。
ここなんですが、実際にやってみたら、%sって、お天気本体だけじゃなくて、
.emacsで設定した、ヘッダに入る文字列全体を刺しているみたいです(「お天気
: 今日の東京地方は雨でおじゃる」みたいになります)。
%sって、引用のし方を指定するところでも、いろいろな文字列の代わりに使いま
すよね。みんな同じ%sで、どうしてぐちゃぐちゃにならないんでしょう?
} さて、今もう一度眺めるとどうでしょう??
括弧の意味がわかった瞬間、すごい目から鱗でした。
でも、なにをどういう順番で書くのか、判断するのは難しそうですね。
コマンドが最初に来て、その後にオプション、というのが、実感としてつかめて
くると、もう少し解るようになるでしょうか。
今度は、以前作ってくださった"unfold-region"コマンド(でしたっけ?)を見て
みようかなと思うのですが、難しいですか?
# Mewの声が代わるバージョン入れてみました。マークがあることに一瞬で気づ
けるので、便利に使えそうです。
Dマークに飛ぶのも、ちゃんとできました。この二つの機能があるだけで、私にと
っては大分使いやすくなる気がします。
**-***-***-***-***-***-***-***-***-***-***-***-**
Reiko TAKAHASHI (高橋玲子)
E-mail: HFC03614@...
ICQ UIN: 85924121 (Twinkle)
**-***-***-***-***-***-***-***-***-***-***-***-**