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!?
---
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秒
_ (未記入) ― 2010年05月20日 10時08分55秒
あ、やっぱり GHC のバグかも。酒井さんが報告しようとしたら、もう報告されていたという話だったかも。
Y のまとめは書いておきました。
http://d.hatena.ne.jp/kazu-yamamoto/20100519/1274240859
Y のまとめは書いておきました。
http://d.hatena.ne.jp/kazu-yamamoto/20100519/1274240859
※メールアドレスと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で
---
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/ )に転載したものから。
---
もうすぐ、出ますね。新宿ジュンク堂など早い書店だと、もうある
---
もうすぐ、出ますね。新宿ジュンク堂など早い書店だと、もうある
型推論をごまかしていいなら、もっと簡単に実装できます。
http://d.hatena.ne.jp/kazu-yamamoto/20091118/1258535348
この辺り、ちゃんとまとめておかないと、誤解の元かなぁ。