タグ

lambda-calculusに関するnabinnoのブックマーク (7)

  • elispのlambdaにもcalleeを - 技術日記@kiwanami

    いろいろ準備中です。小ネタで。 JavaScript には arguments.callee という、「今いる関数」が入っている便利なプロパティがあります。 arguments.callee - JavaScript | MDN これが非常に便利で、最近elispでも欲しくなってきたのでこう書いてみました。 (defmacro jslambda (args &rest body) (let ((argsyms (loop for i in args collect (gensym)))) `(lambda (,@argsyms) (lexical-let (callee) (setq callee (lambda( ,@args ) ,@body)) (funcall callee ,@argsyms))))) 名前がアレですが、とりあえず普通に lambda の代わりとして書けます。 (

    elispのlambdaにもcalleeを - 技術日記@kiwanami
  • Emacs Lisp のダメなところ - あどけない話

    Emacs Lisp をこよなく愛する僕の目から、Emacs Lisp がダメだと思うところをまとめておきます。 文化的な問題 Emacs Lisper の多くは、Lisp が好きで使っているのではなく、Emacs が好きだからしかたなく使っているのでしょう。当は C で書きたいのに、無理して Lisp を利用している感じです。 そのため、Emacs に付いてくる Emacs Lisp のコードは、Lisp らしくないものがほとんどです。単に C での発想を Lisp で表現しています。 これらのコードは、読みこなせないぐらい関数が大きく、副作用のある部分とない部分が分離されていません。また高階関数を用いて、データ構造を走査するコードと実際に仕事をするコードを分離するという意識も低いようです。 GoogleMapReduceという論文のお陰で、Lisp の写像関数(map)と畳込み

    Emacs Lisp のダメなところ - あどけない話
  • function の役割り - Emacs Lisp あれこれ

    関数をクオートするのには quote (') より function (#') の方がよいとされている。 しかし、どういう利点があるのかあまり理解されていない。 C 言語のソースを見ると、quote と function はまったく同じ実装になっている。 つまり、実行時の役割は完全に一緒である。 以下の例では、auto-fill-function をいうシンボルをクオートしている。 このようにシンボルをクオートする場合は、 「以下のシンボルは関数ですよ」という「コメント」としての役割はあっても、 クオートという意味においてはまったく違いはない。 (setq auto-fill-function (function my-auto-fill-function)) では何が嬉しいのか? それは、byte compile のときに、 quote でクオートするときよりも適切に byte comp

  • bookshelf.jp

    This domain may be for sale!

  • カリー化 - Wikipedia

    カリー化 (currying, カリー化された=curried) とは、複数の引数をとる関数を、引数が「もとの関数の最初の引数」で戻り値が「もとの関数の残りの引数を取り結果を返す関数」であるような関数にすること(あるいはその関数のこと)である。クリストファー・ストレイチーにより論理学者ハスケル・カリーにちなんで名付けられたが、実際に考案したのはMoses Schönfinkelとゴットロープ・フレーゲである。 ごく簡単な例として、f(a, b) = c という関数 f があるときに、F(a) = g(ここで、g は g(b) = c となる関数である)という関数 F が、f のカリー化である。 関数 f が の形のとき、 をカリー化したものを とすると、 の形を取る。uncurryingは、これの逆の変換である。 理論計算機科学の分野では、カリー化を利用すると、複数の引数をとる関数を、一つ

  • アロンゾ・チャーチ - Wikipedia

    アロンゾ・チャーチ(Alonzo Church、1903年6月14日 - 1995年8月11日)はアメリカの論理学者、数学者である。ラムダ計算の創案者や、「チャーチ=チューリングのテーゼ」の提唱者として知られる。 経歴[編集] ワシントンD.C.にて判事の父のもとに生まれ、1924年にプリンストン大学で学士号を取得した。同大学院に進み、1927年にはオズワルド・ヴェブレンの指導のもと、公理的集合論に関する論文で博士号を取得した。 その後、ハーヴァード大学、ゲッティンゲン大学等を経て、1929年にプリンストン大学助教授に就任。1939年には準教授、1947年には教授に昇格した。1967年、プリンストン大学を退官し、その後は1990年に退官するまでカリフォルニア大学ロサンゼルス校(UCLA)教授を務めた。特にプリンストン大学時代には、S・C・クリーネ、ジョン・ロッサー、アラン・チューリング、レ

  • ラムダ計算 - Wikipedia

    この記事には参考文献や外部リンクの一覧が含まれていますが、脚注による参照が不十分であるため、情報源が依然不明確です。 適切な位置に脚注を追加して、記事の信頼性向上にご協力ください。(2020年5月) ラムダ計算(ラムダけいさん、英語: lambda calculus)は、計算模型のひとつで、計算の実行を関数への引数の評価(英語: evaluation)と適用(英語: application)としてモデル化・抽象化した計算体系である。ラムダ算法とも言う。関数を表現する式に文字ラムダ (λ) を使うという慣習からその名がある。アロンゾ・チャーチとスティーヴン・コール・クリーネによって1930年代に考案された。1936年にチャーチはラムダ計算を用いて一階述語論理の決定可能性問題を(否定的に)解いた。ラムダ計算は「計算可能な関数」とはなにかを定義するために用いられることもある。計算の意味論や型理論

  • 1