Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
Matzにっき(2006-06-03)
[go: Go Back, main page]

«前の日記(2006-06-02) 最新 次の日記(2006-06-04)» 編集

Matzにっき

<< 2006/06/ 1 1. Bitwise Magazine :: Ruby programming tutorial
2. Bitwise Magazine :: Ruby Programming
3. mandatory arguments after splat
2 1. 平成17年度情報化月間 第26回 U20プログラミングコンテスト
2. ZDNet.com オープンソースブログ:成功するオープンソースビジネスモデル7選
3. Ruby のブロックってオブジェクトじゃないよね。これって“驚き最小の法則”に反しない?
3 1. SANYO もちつきベーカリー
2. 引っ越し
3. バプテスマ会
4. 『ふつうのHaskellプログラミング
4 1. 第一安息日
5 1. マルチメディア通信と分散処理研究会 第127回 研究報告会
2. 東大での話
6 1. ベンチャーファンド
7 1. カバン
2. 地方銀行と海外通貨
3. 寄付
8 1. Alan Kayといっしょ
2. 秋葉原
3. オープンソースマガジン8月号
9 1. Interop
2. オープンソースマガジン8月号
3. 日本Rubyカンファレンス前夜祭
10 1. 巨大パッチ
2. 日本Rubyカンファレンス、発表、パネル
3. 日経Linux8月号
11 1. ファイアサイド
12 1. 原稿の苦しみ
2. スライド準備
3. 「趣味の言語からビジネスの言語へ」---日本初のRuby大規模イベント開催
13 1. 東大講演
2. 羽田まで
3. 「補償金もDRMも必要ない」--音楽家 平沢進氏の提言
14 1. 歯医者
2. 原稿完成
3. 「Linuxにもっと日本からのコードを増やすには?」
15 1. Pickaxe監修
2. Unicode対応
3. ":"とblock by indentation
16 1. 「地方自治体に金はない、残されているのは時間だけ」--長崎県
2. ECナビ、自社の研究組織「ECナビラボ」で、学生のインターンシッププログラムを開始
3. 「Google独占にはさせない」--国産検索エンジン開発へ、産学官が一致団結
17 1. 片づけ
2. タレントショー
3. ミュシャ
4. Little Book of Ruby
18 1. 日曜
2. 米子
3. 父の日
19 1. デバッグ
20 1. HT
2. エラトステネス
21 1. Rails講習会定員一杯
2. 「美しいコードを書けるからRubyを選んだ」---Ruby on Rails作者 David Heinemeier Hansson氏
3. Gardens Point Ruby.NET Compiler
22 1. Unicode
2. auto conversion
23 1. 商談
2. そば屋
3. 夫婦でペアプロ
4. RubyConf presentaion
24 1. 親子活動
2. Mixinと多重継承
3. 1.8.5 preview1
25 1. 日曜日
2. 異文化交流
3. ステーク連絡
26 1. Emacs過剰適応
2. スライド作成
27 1. Web 2.0の挑戦者:ニッチ商品も見つかる?リアルメディアの交換サイトlendmonkey - CNET Japan
28 1. 生まれた時からプログラマ☆興味と感性で世界を驚かす/Tech総研
2. Judy Arrays
29 1. 「オープンソースはボランティアではない」--サンのオープンソース責任者が講演 - CNET Japan
2. わからないこと
30 1. キルギス講演
>>
迷惑メール対策なら Dr.WEB
『Dr.WEB メールデーモン』、MTA 用迷惑メール対策製品です!


2006-06-03 [長年日記]

_ SANYO もちつきベーカリー

最近になってようやく松江市にもヤマダ電器が開店したのだが、 開店セールで安かったので、妻と一緒に見に行った際につい衝動買い。 ただし、現物は今週まで届かなかった。

で、パンを焼いたらおいしかった。 もっとも以前から持っていた象印のものと極端に違うかというと自信がない。 しかし、米粉のパンが焼けるとか、餅がつけるとか付加的な機能に期待してしまうのであった。 今後が楽しみ。

ところで、またSANYO製品を買ってしまった。 うちは洗濯機も、FAXも、ビデオデッキも、布団乾燥機もSANYO製なのだ。 別にSANYOファンというわけではないはずなんだがな。

判官贔屓?

_ 引っ越し

妹夫婦が引っ越しなので手伝いに行く...のだが、 妹がほとんど荷作りを完了していたのと、 運送業者が驚くほど手際がよかったので、 出番がない。

結局、少しだけ掃除の手伝いをしただけで終わった。 今まで何度か引っ越したことはあるし、他人の引っ越しを手伝ったことも何度もあるが、 こんなに手早いのは初めてだ。

_ [教会] バプテスマ会

夜にはバプテスマ会。私たちは新しい仲間を歓迎します。

_ふつうのHaskellプログラミング

近所の本屋で購入。まだ、2章までしか読んでいないが、 この範囲で一番感動したのは、レイアウトルール。 ブロック構造をインデントで表現しつつ、 式と文の分離を発生させないというすばらしいルール。

13年前、Pythonの文法がこうだったら、私がRubyを作る動機のひとつはなかったろう。 ちなみにもうひとつの動機は、あのオブジェクトモデル。

本日のツッコミ(全14件) [ツッコミを入れる]
_ 猫公爵 (2006-06-08 17:31)

うちの家電もSANYO(とSHARP)ばかりです。
理由はわかっています。安いから。それだけ。

_ まつもと (2006-06-08 18:50)

「安いから」ですか。うちは「餅もつけるから」とか「横置きドラム式だから」、「2倍速再生が出来るから」とか別の理由があるものが多いように思います。役に立ってないものもありますが。
まあ、「変な機能がついてるわりに安かった」ってことなんでしょうけど。

_ とおりすがり (2006-06-08 20:22)

> 式と分の分離
式と文の分離、のtypoでしょうか?

_ まつもと (2006-06-08 20:27)

その通りです。直しておきました。ありがとうございます。

_ みずしま (2006-06-09 02:50)

> ブロック構造をインデントで表現しつつ、式と分文の分離を
> 発生させないというすばらしいルール。

レイアウトルールと、式と文を分離するということは独立した話だと思うのですが、どういう意味なのでしょうか?Pythonの文法でも、インデントされた式の並びが単に最後の式の値を返すなどとすれば文と式を区別する必要は無いですよね?

_ まつもと (2006-06-09 03:56)

本当に区別する必要はありませんか?
なぜPythonのlambdaがひとつの式しか書けないのか、そこには理由があると思いますよ。「たまたまguidoがそうしたかった」という以上の。

_ みずしま (2006-06-09 19:38)

区別した方がより自然な文法であるかもしれませんが、現在のPythonの文法において、文と式を区別しなければならない必然性は思いつきませんでした。また、Pythonのlambdaがひとつの式しか書けない理由については、複雑なlambda式が可読性を低下させることを懸念したのではないかと個人的には思いますが、本当のところはわかりません。まつもとさんご自身はその理由について、どのように考えておられるのでしょうか。

_ まつもと (2006-06-10 04:14)

じゃあ、関数引数を二つとる関数呼出しを現在のPythonの文法で実現できますか?

_ まつもと (2006-06-10 04:25)

あ、現在の文法では出来ないのは明らかなんで、「現在のインデントルールで」に言い換えたほうがよいですね。
より正確には「lambdaがブロックを受け付けるようにPythonの文法を変更したとして(lambdaの値は最後の式の値)、その場合、現在のインデントルールのままではふたつ以上のlambdaを含む「式」を記述できません。私はそれがPythonが文(ブロックを含み、値を持たない)と式を区別している最大の理由だと思います。

_ みずしま (2006-06-10 05:48)

うーん。やっぱりよくわかりません。例えば、関数引数を二つとって、両者を合成した関数を返す関数composeを考えたとき、ブロックを本体に持つlambda式二つを渡すような呼び出しは、現在のPythonのインデントルールでも次のように書くことができると思うのですが、何か間違っているでしょうか(A,B,C,Dは何らかの式)?

f = compose(
  lambda x:
    A
    B
,
  lambda x:
    C
    D
)

_ まつもと (2006-06-10 05:53)

コンマの位置がインデントルールを破ってると思いますが。

_ みずしま (2006-06-10 09:56)

でも、現在のPythonでも、以下のような式は書けるわけですから、もし上の式がインデントルールを破ってるなら、以下の式もインデントルールを破ってることになると思うのですが。また、
http://www.python.jp/doc/release/ref/indentation.html
を参照してみても、特にインデントルールに違反しているようには見えません。

f = compose(
  lambda x: x + x
,
  lambda x: x * x
)

_ まつもと (2006-06-11 00:50)

これは「カッコの中では改行が意味を持たない」ルールが適用されているのではないかと。要するに
  compose(lambda x:x+x, lambda x:x*x)
と同じことでしょう。ところがlambdaがブロックを許すと、ふたつ並べる場合にどこまででブロックが終わるのか明示するのは難しいし、仮にできたとしても大変美しくないです。
Haskellのようにインデント形式でも(ブレースを使って)範囲を明示する形式でも書ける、というルールにするのでなければ、ブロックを含む「文」は式の一部になれない、というルールにせざるをえなかったのでしょう。
そのことはlambdaにブロックを持たせようとしたPEPがすべてrejectされた経緯からもうかがうことができます。

_ みずしま (2006-06-12 09:38)

> これは「カッコの中では改行が意味を持たない」ルールが適用
> されているのではないかと。要するに
> compose(lambda x:x+x, lambda x:x*x)
> と同じことでしょう。ところがlambdaがブロックを許すと、
> ふたつ並べる場合にどこまででブロックが終わるのか明示する
> のは難しいし、仮にできたとしても大変美しくないです。

了解しました。確かに、そういうことならば、単純にインデントによって複数行(式)lambdaを表現するのは問題がありそうです。あと、「カッコの中では改行が意味を持たない」ルールについては、
http://www.python.jp/doc/release/ref/implicit-joining.html
にちゃんと書いてあったのに、見落としていました。すみません。

お名前:
E-mail:
コメント:

«前の日記(2006-06-02) 最新 次の日記(2006-06-04)» 編集

RSS feed meter for http://www.rubyist.net/~matz/ Creative Commons License This work is licensed under a Creative Commons License.