2010年2月17日のブックマーク (8件)

  • 2006-06-12

    これまで考察してきたクロージャの件ですが、まだまだ頭の中では発散しているのですけど、一旦、簡単にまとめておきたいと思います。 ただ書き散らかしているだけでは意味ない (いや、意味はあると思ってるんですけど。自己矛盾だ。) ですからね。 Rui さん、shiro さんのコメントに助けられて、今では、 手続きをファーストクラスオブジェクトとして扱える。 静的スコープを持つ。 無限のエクステントが保証されている。 の三つの基盤が揃うことで、クロージャが実現されていると考えるに至りました。 Scheme 以外ではどうか判りませんが、こと Scheme に於いては、上の仕様に立脚する形でクロージャが実現されていると考えて差し支えないと思っています。 ただ、言語設計の推移としては、shiro さんから頂いたコメントで示唆されている様に、動的スコープに於ける環境問題 (FUNARG problem) が

    2006-06-12
  • 不完全性定理について(あるいは証明と計算について)

    「証明」という言葉と「計算」という言葉 「計算」という言葉の説明 「証明」という言葉の説明 ここまでのまとめ 補足:「完全」という言葉について 対角化定理と再帰定理 対角化定理 再帰定理 ラムダ計算との関係 第1不完全性定理、停止問題、その他 第1不完全性定理の証明 停止問題、真を表す述語の定義不可能性 自然数論の決定不能性 補足: 「決定可能」「決定不能」という言葉について 第2不完全性定理 第2不完全性定理の証明 第2不完全性定理の内容 補足: ヒルベルトの形式主義(ヒルベルト・プログラム) まとめ 文献 「証明」という言葉と「計算」という言葉 論理学についての話や説明をする場合、 「証明」とか「証明できる」という言葉がふたつの意味で使われる。 ひとつは数学とか日常で普通に使うのと同じ普通の意味での 「証明できる」(何かの正しさを筋道立てて示すことができる)で、 もうひとつは形式的な論

  • 計算モデルと論理とゲーデルの不完全性定理 - Gemmaの日記

    ゲーデルの不完全性定理は、数学を扱う数学、つまりメタ数学を考えるが、それだと理解が難しい。しかし、証明(数学)=プログラムという悟りを開くと、プログラムを扱うプログラム、つまりメタプログラムを考えればよくなり、それならコンパイラ等でなじみがあるので理解が優しくなる。 話の流れは以下。 1. プログラムとは何か 2. 証明とは何か 3. 証明=プログラム , (   {、 {   ヽ.ー、、 \、__ぃ._ゝ⌒ヾ iヾ)}、_ ン_ー-_二ー-, 〉 {厶 _、ヽ              _ ヽ._>'´ / /,ィ/ / ハYヘい       ,. -- 〃⌒ r−-、      ィ´  〃 ,イ/7'  ,イイ/ 小ヽ 丶、 ,. ‐ '´ハ i   ″`ヽ、 、ヽ、     /幺ィ  {从{小込v' jゥ仏厶川リ}  YV,   小 Vj. |丶   ヽ ` ー-ミー--'_,辷三彡

    計算モデルと論理とゲーデルの不完全性定理 - Gemmaの日記
    tanimina
    tanimina 2010/02/17
    cf.→「不完全性定理について(あるいは証明と計算について) 」http://www.ice.nuie.nagoya-u.ac.jp/~h003149b/lang/p/frag/frag_g.html
  • Martin Fowler's Bliki in Japanese - クロージャ

    http://martinfowler.com/bliki/Closure.html 動的言語に興味がでてくると、 クロージャやブロックと呼ばれる概念に出会うと思います。 C/C++/Java/C# などクロージャを持たない言語をご使用の方は、 どういったものなのかご存知ないかもしれません。 ここでは簡単にクロージャについて説明します。 クロージャを持った素晴らしい言語を使ったことある方にとっては、 あまり面白くない話かもしれません。 クロージャは長年使用されてきました。 私が最初に出会ったのは、おそらく Smalltalk だったと思います。 Smalltalk ではブロックと呼んでいました。 Lisp ではクロージャを多用しています。 Ruby でもクロージャが提供されています――多くの rubyist がスクリプト言語に Ruby を選ぶのはこのためです。 基的にクロージャとは、ブ

  • History of T

    (T was one of the best Lisp implementations, and set a standard for clean design that few newer dialects have been able to meet. Here Olin Shivers recounts T's history.) Around 1981-1982, the Yale CS dept., which had a strong AI group led by Roger Schank, hired undergraduate Jonathan Rees to implement a new Lisp for their research programming. Jonathan, I and Dan Weld (now a prof. at U Washington)

    tanimina
    tanimina 2010/02/17
    >>I asked RMS when he was implementing emacs lisp why it was dynamically scoped and his exact reply was that lexical scope was too inefficient.<<
  • The Function of FUNCTION in LISP or Why the FUNARG Problem Should be Called the Environment Problem(訳)

    The Function of FUNCTION in LISP or Why the FUNARG Problem Should be Called the Environment Problem Joel Mose 原文 概要 多くの強力なプログラミング言語に共通するある問題が、 関数の自由変数にどんな値を割り当てるかを決めなければいけない場合に 発生する。 この問題を解くための異なる実装アプローチを考察する。 議論は、LISPの実装に集中し、 なぜ現在のたいていのLISPシステムが オリジナルのLISP1.5システムほど一般的でないのかを指摘する。 可能な限りALGOL風の用語での議論を試みたので、 LISPになじみのない読者も困難なくこの文章を読めるに違いない。 多くのプログラマは、 スタックを使って再帰関数の引数と局所変数の値を管理する事を 良く知っている (訳注1)。 具体的に

    tanimina
    tanimina 2010/02/17
    >>FUNCTIONは閉鎖的または非多孔的(nonporous)に関数をおおっている(このことから、Landinはクロージャ(閉包)という用語を使っている)。<<
  • Scheme:なぜSchemeにはreturnが無いのか

    あるいは、なぜcall/ccがプリミティブなのか、に関する一考察 (Shiro: 「なんでも継続」に入れようかと思ってたネタだけど、 あっちがいつ書けるかわからんので、忘れないようにこっちにまとめとく) (話の流れがあるので、誤りの修正以外のコメントは途中ではなく、一番下にお願いします) returnはどこだ? Aliceは、リストlisと述語手続きpredを取り、lisの各要素に順にpredを適用して、 predが真の値を返したら直ちにその要素を返すような関数findを 書くことを考えた。 (findは便利なので、実はsrfi-1に定義されてるけど、 Aliceはまあ自分の勉強のために書いてみることにしたと思いねえ)。 AliceはPerlなら良く知っている。Perlならこんな感じで書けるはず。 sub find { ($pred, $lis) = @_; foreach $elt (@

    Scheme:なぜSchemeにはreturnが無いのか
  • A Definition of Closures - selflearn @ ウィキ

    という記述と共にブログの記事が紹介されていました。Closureとは何なのか、そしてClosureについてまだよく分かっていないので、勉強がてら訳してみようと思いました。 ちなみにこの方、Googleの中の人です。2008/10/3時点の情報ではMicrosoft転職されたようです。

    A Definition of Closures - selflearn @ ウィキ