Google
ブログ(iiyu.asablo.jpの検索)
ホットコーナー内の検索
 でもASAHIネット(asahi-net.or.jp)全体の検索です。
 検索したい言葉のあとに、空白で区切ってki4s-nkmrを入れるといいかも。
 例 中村(show) ki4s-nkmr

ウェブ全体の検索

Y Combinator(Yコンビネータ)がHaskellで書けない!?2010年05月08日 09時58分34秒

ASAHIネット(http://asahi-net.jp )のjouwa/salonからホットコーナー(http://www.asahi-net.or.jp/~ki4s-nkmr/ )に転載したものから。
---
http://iiyu.asablo.jp/blog/2010/05/01/5055988
ユニクロのTwitter使ったこれは頭いいねえ
で、ちょっと書いた飲み会で、弾さん(小飼弾)が、Y Combinator(Yコンビネー
タ)がHaskellで書けないのは、すごい皮肉だと言っていた。OCamlなら書ける
のにと。
 そのときは、「へえ、そうなのか」と「えっ、嘘だろう」の両方が入りミジ
ンコ状態の心境だった。
 ちなみに、私は、OCamlのことを、岡村君と呼んでいます。\(^O^)/
 そんな小ネタはいいから。先に行け。

http://iiyu.asablo.jp/blog/2010/05/06/5065468
洋書のAI(人工知能)本。「実用Common Lisp」のことも少し。
を書いていたときに、このことを思い出した。
 Haskellは、遅延評価なのに、どうして書けないのかなと思ったわけ。
 Haskellのその辺わかってないし、プログラム書かないから、パーの助状態
なので、ちょっと調べてみた。
 評価の話じゃなくて、型をチェックするとき無限ループになって破綻するの
ね。なるほど。
 でも、HaskellでY Combinator(Yコンビネータ)は、書けるようね。たとえば、
これ。
http://r6.ca/blog/20060919T084800Z.html
Y Combinator in Haskell
 new typeで、補助的な型を定義してやればいいと。
 でも、GHCは、バグがあって、これでも無限ループになると。Hugsは動くと。
 ま、なんにせよ、これは学術的な練習問題なので、実際には、そこにあるよ
うな関数定義でOKだよと。

 以下の
[Haskell] How to define Y combinator in Haskell
には、もう少し詳しい話がある。
http://www.haskell.org/pipermail/haskell/2006-September/018495.html
http://www.haskell.org/pipermail/haskell/2006-September/018497.html
http://www.haskell.org/pipermail/haskell/2006-September/018498.html

 GHCのinlinerのバグは、たぶん直さないので、NOINLINEというプラグマを使
えばいいと。

 この件に関する、弾さんのブログエントリは、
http://blog.livedoor.jp/dankogai/archives/50463152.html
Y combinator is forbidden in Haskell!?
なのかな。2006年か。
 あ、ちゃんと書けるよというトラックバックがついているね。
http://www.tom.sfc.keio.ac.jp/~sakai/d/?date=20060423#p02
λ. Re: Y combinator is forbidden in Haskell!?

コメント

_ 山本和彦 ― 2010年05月19日 11時00分13秒

補足しますと、酒井さんが GHC のバグだと思っていたのは仕様でして、回避するには NOINLINE を使うということです。

型推論をごまかしていいなら、もっと簡単に実装できます。
http://d.hatena.ne.jp/kazu-yamamoto/20091118/1258535348

この辺り、ちゃんとまとめておかないと、誤解の元かなぁ。

_ (未記入) ― 2010年05月20日 10時08分55秒

あ、やっぱり GHC のバグかも。酒井さんが報告しようとしたら、もう報告されていたという話だったかも。

Y のまとめは書いておきました。

http://d.hatena.ne.jp/kazu-yamamoto/20100519/1274240859

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

※投稿には管理者が設定した質問に答える必要があります。

名前:
メールアドレス:
URL:
次の質問に答えてください:
一富士、二鷹、三は? ひらがなで。

コメント:

トラックバック

_ ホットコーナーの舞台裏 - 2010年05月21日 04時13分38秒

ASAHIネット(http://asahi-net.jp )のjouwa/salonからホットコーナー(http://www.asahi-net.or.jp/~ki4s-nkmr/ )に転載したものから。
---
http://iiyu.asablo.jp/blog/2010/05/08/5072522
Y Combinator(Yコンビネータ)がHaskellで

_ ホットコーナーの舞台裏 - 2010年06月17日 05時29分04秒

ASAHIネット(http://asahi-net.jp )のjouwa/salonからホットコーナー(http://www.asahi-net.or.jp/~ki4s-nkmr/ )に転載したものから。
---
 もうすぐ、出ますね。新宿ジュンク堂など早い書店だと、もうある