3/3 ひまなつり

http://d.hatena.ne.jp/cho45/20080303/1204475923

g86 のオフに参加した。けどなんかこう調子悪くてテンション低くて申し分けなかった。id:jdnaoya さんに関する考察を聴いた。

dropdbお姉さんを囲む会ですか?!
考察???あ、そういえばわたしもid:jknaoyaちゃんに関する考察を聞いたことがあるよ!もじら24の時だったかな?ああいうのって端で聞いていると面白いよね!みんな見当違いなことを言ってたりして笑いをこらえるのがたいへん笑

最近トラックバックを打たれたときしかブログ書いていなくてゴメンナサイ・・・
就職活動が忙しいのです・・・
ああー、なやむなぁ。就職すべきなのか、博士課程に進むべきなのか・・・

とある人に教えてもらったのですけど

http://www.lingr.com/room/1000speakers/archives/2008/02/10#msg-26074349

# はやみず
# jknaoyaにあいたい><
# むしろjdnaoyaのほうがいいかも。

「むしろ」って。。。ひどい(´ノω;`)

わたし知ってるんだからね!id:hayamizさんたち86世代がid:amachangに頼み込んでid:dropdbとの一対多合コンをセッティングしてもらったってことを!はやみずさんにはラムダというりっぱな奥さんがいるのに合コンだなんて!!!!(-_-#)

PHP

id:jknaoyaちゃんが「PHP はテンプレート言語なんですよね?」と日記に書いていたので私も勉強してみたよ!

PHP:

<?php foreach($xs as $x): ?>
  今は<?php echo $x ?>番目<br/>
<?php endforeach ?>

DTML

<dtml-in xs>
  今は<dtml-var sequence-item>番目<br/>
</dtml-in>

Django

{% for x in xs %}
  今は{{ x }}番目<br/>
{% endfor %}

わかりやすいね!

vコンビネータつくれるかな

なにが与えられても同じものが返らないと行けないって言う条件から、まずは与えられた引数が消えないと行けないよね。
消すには`kxに入れるしかない。

で、消えた後のが元通りにならないと行けないから、


むずかしいね。

Unlambdaをうまくゲーム化できないかな

Iコンビネータは透明スライムで、食べたものの色に染まる。Vコンビネータは黒スライムでなにを食べても黒いまま。Kコンビネータは最初に食べたものを貯めていて、二つ目を食べると貯めていたのを吐き出して自分は死ぬ。

Sコンビネータが難しい。子分を2人まで引き連れられるけど、3人目をゲットすると子分に殺されて、一番下の子は上の二人にはんぶんこされて食べられて、その後で一番上の子が二番目の子を食べる。

修羅場。。。

こんびねーたv

void: v(x) == v
equivalent to ` ``s``s`kskk ``s``s`kskk

今日はこれを理解したい。

まずわかりやすい表記法を作る。
xを入れるとxが出てくる箱を[x -> x]と書くことにする。

constant: ``kXY = X

これは[x -> [y -> x]]。

substitution: ```sXYZ = ``XZ`YZ

これは[x -> [y -> [z -> ...

箱xにyを入れるのを(x <- y)と書くことにする。

substitution: ```sXYZ = ``XZ`YZは

[x -> [y -> [z -> *1]]]

`ksは

([x -> [y -> x]] <- s)だから[y -> s]

``s`kskは*2]で
[z -> (s <- [y -> z])]

``s``s`kskkは*3]で、
[z -> *4]で
[z -> ([z -> ((s <- [y -> z]) <- [y -> z])] <- [z -> ((s <- [y -> z]) <- [y -> z])])]で
[z -> ([z -> ((s <- [y -> z]) <- [y -> z])] <- [z -> ((s <- [y -> z]) <- [y -> z])])]で

やっぱりわからない。
仮引数を使わない表現方法を考えなきゃ。

あー。
すなおに括弧で書いたらわかった。途中で中途半端に展開しちゃダメなんだ。
`ksは(k s)で、仮に「ぬ」と書くことにする。
``s`kskは``sぬk。でここで展開せずにこのまま「め」と呼ぶことにする。
``s``s`kskkは``sめk。これを「ね」と呼ぶことにする。
` ``s``s`kskk ``s``s`kskkは`ねね。
これに適当な引数「の」を与えるとどうなるかを考える。
関数適用の「`」は適切な数当たっているので省略する。
そうすると、ねねの、がどうなるかということになるけど、
ねねの = (sめk)ねの = (sめkね)の = (めね)(kね)の = (sぬkね)(kね)の = (ぬね)(kね)(kね)の = ((k s)ね)(kね)(kね)の = s(kね)(kね)の = (kねの)(kねの) = ねね
できた!与えられた「の」が消滅して、もとの「ねね」に戻ったよ!

*1:x <- z) <- (y <- z

*2:s <- `ks) <- k)だから、 [z -> ((`ks <- z) <- (k <- z

*3:s <- ``s`ksk) <- k)だから、 [z -> ((``s`ksk <- z) <- (k <- z

*4:s <- [y -> z]) <- [y -> z])]で ` ``s``s`kskk ``s``s`kskkは ((s <- ``s``s`kskk) <- ``s``s`kskk)だから、 [z -> ((``s``s`kskk <- z) <- (``s``s`kskk <- z