トップ «前の日(04-21) 最新 次の日(04-23)» 追記

日々の流転


2002-04-22

λ. Formulating Haskell

Formulating Haskellを眺めてみる。

Tags: haskell

λ. 記号処理プログラミング

yppasswdのダミーを作って遊ぼうとしている人がいたので、ちょっとアドバイスしてみる。

λ. A first introduction to categories 読了

一応読了。最後の方のエクササイズはあまり解けていませんが……

Tags: 圏論

λ. システムプログラミング

ポインタとか配列とか。退屈だったので「自分自身を指すようなポインタ型は宣言できないんですか?」とか質問してみる。出来ないのは知ってるのだけど、dereferenceがendomapになったら面白いかなとか思ったんで。

λ.1+1=2って本当?」 その2

いや、別に僕も言っている内容に興味があるわけではなくて、単に久野君をつっついて面白がっているだけです。

訊いてみると一応ペアノの公理あたりは知っていると言っているので、どうしてこういう疑問が出てくるのか確かに不思議だとは思うのですが。

λ. 帰り

みんなと一緒にごはんを食べに行こうかとも思ったけど、眠かったので、帰って速攻で寝る。


2004-04-22

λ. 『ういうい♥days』, 犬上 すくね

を読んだ。

ういういdays 1 (バンブー・コミックス)(犬上 すくね)

Tags:

λ. RDFからサイトを作るとか

RDFをXSLT等で整形して一つのページとして表示しているのは頻繁に見る。一つのページではなく、一つののサイトにするのはどうだろうか?、とふと思った。RDFのクラスに対して整形ルールを定義し、RDFの各ノードから個々のページを生成するとか……

λ. 萩野服部研新歓@八十の別家

なんとビックリ25人もの参加者。それから某サトレイ氏の恐ろしさの一端を理解する。

Tags: tom

2005-04-22

λ. C304 裏切りの村 5日目

残っているのが8人で、内訳は共有者2人、占い師or狂人のアルビン、グレー5人で、人狼がグレーの中に2人いるはず。その場合狂人の可能性があるアルビンを吊るほうが有利か、それともグレーから吊った方が有利か?

実際に、素朴なモデルで確率を計算してみるとこんな感じ。プレイ中に実際に書いたメモでは木として書いてたけど、この日記に木の図を書くのは面倒なのでここではテーブルで代用してみた。経過は縦方向に、可能性の分岐は横方向に対応している。分岐するところでは括弧の中に確率を書いた。

また、幾つか仮定を置いている。灰の中の誰が人狼かは無作為だとしているし、灰の中の誰を吊るかも無作為だとしている。また、アルビンが狂人である確率とアルビンが占い師である確率は半々であり、アルビンの占い結果は一切信用しないことにしてる。それから、人狼側は共有者を襲撃し、またランダムに賭けるのは(翌日の無い)最終日だけとしている*1

アルビン吊りの場合
5日目
(残り8人)
人狼/灰 = 2/5
5日目吊り先 アルビン
6日目
(残り6人)
人狼/灰 = 2/5
6日目吊り先 村人(3/5) 人狼(2/5)
7日目
(残り4人)
- 人狼/灰 = 1/4
7日目吊り先 - 村人(3/4) 人狼(1/4)
勝利 人狼側
(3/5 = 60%)
人狼側
(2/5 * 3/4 = 30%)
村人側
(2/5 * 1/4 = 10%)
灰吊りの場合
5日目
(残り8人)
人狼/灰 = 2/5
5日目吊り先 村人(3/5) 人狼(2/5)
6日目
(残り6人)
人狼/灰 = 2/4 人狼/灰 = 1/4
6日目吊り先 村人(2/4) 人狼(2/4) 村人(3/4) 人狼(1/4)
7日目
(残り4人)
- 人狼/灰 = 1/3 -
7日目吊り先 - 村人 (2/3) 人狼 (1/3) -
アルビンの正体 - - 狂人(1/2) 真占い師(1/2) -
ランダムで決まる吊り先 - - 村人(1/2) 人狼(1/2) - -
勝利 人狼側
(3/5 * 2/4 = 30%)
人狼側
((3/5 * 2/4 + 2/5 * 3/4) * 2/3 = 40%)
人狼側
((3/5 * 2/4 + 2/5 * 3/4) * 1/3 * 1/2 * 1/2 = 5%)
村人側
((3/5 * 2/4 + 2/5 * 3/4) * 1/3 * 1/2 * 1/2 = 5%)
村人側
((3/5 * 2/4 + 2/5 * 3/4) * 1/3 * 1/2 = 10%)
村人側
(2/5 * 1/4 = 10%)

5日目更新直前に書いた確率計算はこれを元にしたもの。ちなみに、この計算は共有者のモーリッツさんの言っていた1/4という数字が理解できなくて、どうやったら1/4という数字を導けるか考えた結果なのだが、モーリッツ本人はランダム勝負が可能になった時点で人狼がランダム勝負に賭けると考えて、2回のランダム勝負を潜り抜ける確率の1/2*1/2=1/4と単純に考えていたらしい。真面目に考えてちょっと損した。

Tags: 人狼

*1 自明とは思うが、一応理由を説明する。仮に6日目に投票先が人狼に決定され狼がランダム勝負に出たとする。ランダム勝負に勝てればいいが、もし負けた場合には最後の人狼がばれてしまうので、翌日にもう一度ランダムになる。したがって、その時点でランダム勝負に出る場合の狼側の勝率は 1/2 + 1/2 * 1/2 = 3/4 。一方、その時点ではランダム勝負に出ない場合には、翌日の吊りが最後の狼にあたる確率は1/3で、その場合でもランダム勝負が出来るので、狼側の勝率は 2/3 + 1/3 * 1/2 = 5/6 。最終日以外はランダム勝負に出ない方が狼側有利。


2006-04-22

λ. 超準解析のモナド

Wikipediaのモナドのエントリによると、超準解析では「ある与えられた超実数に対して無限に近い全ての超実数の集合」という意味でモナド(Monad)という言葉が使われているそうだ。知らなかった。そういえば以前ファンクターさんがmixi日記で書いていたモナドはこのモナドだったのだろうか……

λ. 間違い探しゲーム (5 Spots)

何度もプレイしてると、流石に絵を覚えてしまう。現在のスコアは以下の通り。

level
175
score
2184765

λ. 「Haskellによる関数プログラミング入門」

日経ソフトウェア6月号*1に「Haskellによる関数プログラミング入門」という記事を書かせていただきました。もうすぐ発売なので、もし良かったら読んでみてください。この日記の読者は関数型言語を既に知っている人が多いと思うので、そういう人には不要かも知れませんが(笑

「やさしい Haskell 入門」はあまりまじめに読んだことなかったんだが、自分で入門記事を書いてみて、あれは良く書けてるなと思った。分かり易いかといえばまた別だとは思うけど。

【2006-04-24追記】 発売されました。 補足や訂正などはおいおいwiki:Haskellによる関数プログラミング入門の方にでも書こうと思います。

Amazon.co.jp
日経ソフトウエア 2006年 06月号 [雑誌]
Tags: haskell

*1 4月24日発売

λ. 読書速度を測ろう - 目指せ速読

ひげぽん OSとか作っちゃうかMona- (2006-04-26) より。 読書速度測定で自分の読書速度を測ることができるそうなので、試してみた。

結果
[あなたの読書速度は2503文字/分です]

まあ、こんなもんか。 このテストだと、一行が結構短いせいで視点を上下にあまり移動せずに読める分、普通の文章を読むときよりも高い数字が出ている気がする。

他の方の結果


2007-04-22

λ. 携帯機種変更

これまで約3年使っていたA5403CAからW43CAへと機種変更。

学生時代は携帯はさほど重要ではなかったけど、社会人になって自分のPCに触れられる時間が著しく減ったため、携帯電話が重要になった。赤外線通信とPCサイトビュアーとQRコード読み取り機能が欲しくなったのが機種変更の主な理由。

しかし、慣れない機種に変更して思ったが、携帯のインターフェースって最悪だと思う。

例えば、ニュースフラッシュという機能がある。 勝手に無料でニュースを受信してくれて重宝しそうなのだけど、ニュースを受信するたびにメロディを鳴らされたりバイブを振動させられたりすると結構邪魔。 そこで、設定でメロディを消音にしバイブも無効にした。 マナーモードにしない場合にはこれで邪魔にならなくなるのだが、マナーモード(通常マナー)にしているとバイブが振動してしまう。 これはあまりに馬鹿げた設計だと思う。 ちなみに、FAQ「EZニュースフラッシュ関連 マナーモードで、EZニュースフラッシュの受信時にバイブレータを振動させないようにするには?」によると、マナーモードを「オリジナル」に設定して、個別に設定しなくてはならないとか…… (唖然

λ. 床屋

に行って、さっぱりしてきた。

本日のツッコミ(全2件) [ツッコミを入れる]

ψ イケメン [私の友達が持ってたやつで、赤いLEDのパネルで動かすケータイがあるんですけど、なんか新しくていい感じでしたよ〜。 L..]

ψ さかい [そのケータイには例えば上記のような問題は存在しないのでしょうか?]


2008-04-22

λ.The Essense of the Iterator Pattern” by Jeremy Gibbons and Bruno C. d. S. Oliveira

The Iterator pattern gives a clean interface for element-by-element access to a collection, independent of the collection's shape. Imperative iterations using the pattern have two simultaneous aspects: mapping and accumulating. Various existing functional models of iteration capture one or other of these aspects, but not both simultaneously. We argue that McBride and Paterson's applicative functors, and in particular the corresponding traverse operator, do exactly this, and therefore capture the essence of the Iterator pattern. Moreover, they do so in a way that nicely supports modular programming.We present some axioms for traversal, discuss modularity concerns, and illustrate with a simple example, the wordcount problem.

を読んだ。

Applicative Programming with Effects (c.f. ヒビルテ(2006-12-07)) の applicative functor を使ってイテレータパターンの本質を解き明かす。 HaskellのData.Traversableモジュール辺りはこの論文に基づいている。

関連