タグ

2013年3月21日のブックマーク (9件)

  • すべて再帰である - karetta.jp

    ayato0211
    ayato0211 2013/03/21
    "そんなの(再帰的プロセスでも反復的プロセスでも)どっちも「再帰的手続き」で書けるじゃん。何を騒いでるの?"
  • Y コンビネータって何? - IT戦記

    このエントリの 親友へ。ブログを書こう。 - IT戦記 y がブログを始めたみたいなので、読んでみた。 で、最新のエントリを読んでみたら、 Y コンビネータというものについて書いてあったので、 Y Combinatorが凄すぎる! - yuji1982の日記 Y コンビネータって何ってところから、自分でもいろいろ考えてみた。 結局なんなのかさっぱり分からなかったんですが、自分が考えたことをまとめておく まず、フィボナッチ数を求める fib を定義する var fib = function(n){ return (n <= 2) ? 1 : (arguments.callee(n-1) + arguments.callee(n-2)); }; fib(10); おお! JS すげー!名前は n しか使ってねーよ! めでたし、めでたし。。。。じゃなくて! JS が素晴らし過ぎて話が終わってしま

    Y コンビネータって何? - IT戦記
  • Y Combinatorが凄すぎる! - yuji1982の日記

    って言いたかったけど、難しくて理解できません>< ラムダの話をしてたら会社の人が、Recursive lambda expressions – The Mellow Musings of Dr. Tの説明をしてくれました。 去年の秋にブクマで見たときは難しそうだからスルーしたけど、、今回は理解しようと頑張って見てみます。 やっぱり理解はできないorz でも、ここで諦めたら負けなので、とりあえず触ってみました。 昔、書いてみたフィボナッチ数列で試してみる public static void Main() { foreach (var item in Math.Fib(10)) Console.WriteLine(item); } static public class Math { static public IEnumerable<int> Fib(int count) { Func<i

    Y Combinatorが凄すぎる! - yuji1982の日記
  • さあ、Yコンビネータ(不動点演算子)を使おう! - よくわかりません

    前回、おとうさんにもわかるYコンビネータ!(絵解き解説編) - よくわかりませんというエントリで、Yコンビネータ(不動点演算子)と再帰の絵解き解説をしました。 Yコンビネータ自身は、結局のところ再帰を産み出してくれるだけです。関数(正確にはλという単純な文字列変換ルール)だけで出来て、プログラミングに関するいろんな原理の研究を可能にするのが凄い訳です。その辺のさわりを、きしださんが解説されています。しかし、単なる再帰なら、実際のプログラミングではYコンビネータなんて使わなくても出来ます。 じゃあ、Yコンビネータとか不動点とかは、偉い学者さんとかが研究に使えばいいもので、普通のプログラマには何の意味もないモノなのでしょうか? というわけで、今回はポジティブに、Yコンビネータや不動点で出てくる考え方を、理論だけじゃなく、実際のプログラミングに応用する例を見てみましょう。 今回、プログラムの例を

  • おとうさんにもわかるYコンビネータ!(絵解き解説編) - よくわかりません

    先日YコンビネータのきしださんのYコンビネータのエントリが話題になっていました。 ずいぶん日にちが経ってしまいましたが、自分も、自分なりにYコンビネータのあたりを絵解きで整理してみたいと思います。きしださんのエントリタイトル*1に引っ掛けて、目標として、自分の父親(非プログラマ。その辺のおっさん)でも解る内容を目指します。 なぜ不動点演算子というのか、不動点だったらなぜ再帰なのか、この辺りも含めて、実感を持って納得できればいいなと思います。 きしださんのエントリのおさらい 題の前に、きしださんのエントリをおさらいしておきます。 Yコンビネータはただのオモチャじゃないんだよ 関数だけで色んな事が出来る 条件分岐をする関数ってのもある。 再帰(ループ)を作れる関数もある。←これがYコンビネータ。 数値も関数で表現できる。 つまり、関数だけで、条件分岐も、再帰(ループ)も、数値も作れちゃう!!

    おとうさんにもわかるYコンビネータ!(絵解き解説編) - よくわかりません
  • shuraba.com - 数と時間

  • scalaでYコンビネータ - ( ꒪⌓꒪) ゆるよろ日記

    Yコンビネータの定義: def Y[A,B]( f:((A => B), A ) => B, x:A ):B = f( ( y:A ) => Y( f,y ),x ) Yコンビネータってのは、要は Y(f) = f(Y(f))となる関数らしい。不動点演算子とか呼ばれていますがなんのことかわかりませんね。 「ある関数fをYに与えた結果できる関数をf'とすると、f'をまたYに与えてできる関数はfと同じ」になるように関数を作り出すものです。 何でこんなもん必要なの? ある無名関数があるとしましょう。この無名関数は名前が定義されていないため、自身を再帰で呼び出す定義ができません。 単純に、0から引数nまで加算する関数を無名関数で定義しようとすると、 (i:Int) => i match{ case 0 => 0 case _ => i + ここで自分自身を再帰で呼びたいけど名前がない( i - 1

    scalaでYコンビネータ - ( ꒪⌓꒪) ゆるよろ日記
  • Lisp M式への回帰(新しいリスト処理言語GavaOne)

    Lisp M式への回帰(新しいリスト処理言語GavaOne) Lisp言語の中間コード(プログラム)とデータ形式を、S式から、M式様の 二進木リスト構造に転換する可能性を論じ、それから得られた知見をベースに開発している 新しいスクリプト言語「GavaOne」を、次の三つのページでご紹介します。 紹介ページへのリンク 1.GavaOne開発に至る経緯とM式様の二進木リスト構造 ==> Lisp M式への回帰(スクリプト言語GavaOne) 2.GavaOne概説書(プログラム基処理機能の説明) ==> Lisp M式への回帰(スクリプト言語GavaOne概説書<体験版>) 3.GavaOne事例集(プログラム処理事例集) ==> Lisp M式への回帰(スクリプト言語GavaOne事例集<体験版>) (注)GavaOne言語開発の意図 Gavaone言語は、次の将来的な目標を掲げて、開発に

  • Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I

    Next: Introduction Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I John McCarthy, Massachusetts Institute of Technology, Cambridge, Mass. 1 April 1960