タグ

closureに関するyouzのブックマーク (12)

  • Rifle-Oriented Programming with Clojure

    Any comparison of hot JVM languages is likely to note that “Clojure is not object-oriented.” This is true, but it may lead you to the wrong conclusions. It’s a little like saying that a rifle is not arrow-oriented. In this article, you will see some of the ways that Clojure addresses the key concerns of OO: encapsulation, polymorphism, and inheritance. This is a whirlwind tour, and we won't have t

    Rifle-Oriented Programming with Clojure
  • EmacsWiki: Fake Closures

    This is a problem about DynamicBindingVsLexicalBinding. Emacs Lisp uses dynamic binding, in contrast to for instance Scheme. This page explains how to write EmacsLisp code that simulates lexical binding. Note: LexicalBinding has been introduced in Emacs 24! With macrosYou use macros to embed the generated symbol into the function’s definition. Example: (require 'cl) (defun make-adder (init) (let (

  • クロージャの動作と展望(?) - 象徴ヶ淵

    クロージャについての言及があったので、ちょっと見解を述べてみる。 On lispに書いてある通りに説明しようとしたら、上手く動かなかった*1ので、xyzzy上で確認できたことを書く。 私がクロージャといっているのは、主にレキシカルクロージャを指している。 lexcalというのは、語彙とか辞書という意味だが、これは、定義された関数が、引数にない変数(フリー変数)を参照しているときに、実際に何を参照するべきかを関数が持っている辞書に記録していることを示している。 関数は、その関数が定義されたクロージャ内の変数を覚えている。 xyzzyでクロージャが意識されるのは、主にlet周りである。 トップレベルで定義された関数は、letで同じ名前の変数が束縛されていても、トップレベルの変数を参照する。 また、let内で定義された変数は、トップレベルや別のlet内で束縛された変数とは無関係でいられる。この場

    クロージャの動作と展望(?) - 象徴ヶ淵
  • 大人のためのブラックボックス読解講座――クロージャとオブジェクトの微妙な関係

    はじめに 2006年8月、Javaの次期仕様(JDK7)にクロージャを入れる案*が出され話題になりました。クロージャは関数型言語では30年以上の歴史を持ち、プログラミングにおける基的な道具となっています。最近はPerlRubyPythonなどの軽量言語(Lightweight Language)にも取り込まれ、それと知らずに使っているユーザーも増えているのではないでしょうか。 一方、手続き型言語の世界では、完全なクロージャはなじみが薄いようです。C言語からC++へと発展してきた手続き型言語のメインストリームでは、 ガーベジコレクションを持たず、ローカル変数をスタックに置くことを基とする言語のため、クロージャとの相性が悪かった オブジェクト指向を採り入れることでクロージャの代用とできた といったことが理由でしょう。 実際、クロージャとオブジェクト指向プログラミング言語には、メカニズム

    大人のためのブラックボックス読解講座――クロージャとオブジェクトの微妙な関係
  • perl - Class vs. Closure : 404 Blog Not Found

    2008年07月13日03:30 カテゴリLightweight Languages perl - Class vs. Closure PERL HACKS(日語版) [英語版] うーん、さすがにそれはいいすぎでしょうか。 クロージャの概念をクラスとの対比でわかりやすく説明する。 - サンプルコードによる Perl 入門 ここで気づいてほしいことは、クラスとクロージャは、実は同じものだということです。たしかにオブジェクトの定義から行くと、 404 Blog Not Found:オブジェクトは難しくない。難しいのはクラス それで、オブジェクトとは何か、といえば、「自分が何が出来るのか[コード]を知っているデータ」ということになる。 であり、クロージャー(closure)は「自分が何を持っているか[データ]を知っているコード」なので、等価ではある。実際、 package Class; sub

    perl - Class vs. Closure : 404 Blog Not Found
  • 大人のためのブラックボックス読解講座――クロージャとオブジェクトの微妙な関係(その2)

    大人のためのブラックボックス読解講座――クロージャとオブジェクトの微妙な関係(その2):プログラミング言語の進化を追え(1/3 ページ) 前回に引き続き、Scheme言語の処理系、Gaucheを開発している川合史朗氏が、クロージャの機能を検証し、関数型言語とオブジェクト指向言語の関係について解説していきます。今回は、クロージャとオブジェクトのより深淵を探求します。 抽象化ツールとしてのクロージャ C++的なオブジェクトの世界では、オブジェクトの実体とは「ひとかたまりの構造体としてメモリ上に置かれたインスタンス変数の値」にすぎません。オブジェクトのポインタを取れば、それは事実上、その構造体へのポインタを持っていることになります。クロージャを「関数」中心で見ていると、その実体は「オブジェクト」の実体とは異質なもののように思えるでしょう。 確かにクロージャのナイーブな「実装」は、関数ポインタと環

    大人のためのブラックボックス読解講座――クロージャとオブジェクトの微妙な関係(その2)
  • Kanasan.JS #2 レポート & 資料: Days on the Moon

    関西での JavaScript 勉強会、Kanasan.JS #2 に行ってきました。今回は 9 時から 21 時という長丁場で、内容は前回に引き続き Prototype.js のコードリーディング。ただし、前回はバージョン 1.5.1.1 だったのが今回からは 1.6.0 を使用ということで、コードリーディングに先駆けて 1.6.0 での変更点に関するプレゼンテーションをやらせていただきました。他の参加者の方々のレポートなどは Kanasan さんの記事経由で読めるかと思います。 フリートーク 午前中はフリートーク及びプレゼンテーションということで、自己紹介の後雑多な話題に。 リファレンス どんな参考文書を利用しているかという話題。とりあえずググって出てきたページという方が結構いるようです。私も検索エンジンを使ったりもしますが、特定のサイトだとこんな感じです。 コア言語 ECMAScri

    youz
    youz 2008/10/01
    クロージャについてとPrototype.js 1.60解説
  • SICPを読む(99) 問題 3.10 - 局所変数の入れ物とフレーム - ボクノス

    うぅん。SICPの説明がなんか納得いかない。 問題 3.10 make-withdrawのletをlambdaに書き直して、環境モデルを書き直す問題。 (define (make-withdraw internal-amount) ((lambda (balance) (lambda (amount) (if (>= balance amount) (begin (set! balance amount) amount) (error "Insufficient funds.")))) internal-amount)) lambdaの引数が環境を生み出すんだから、make-withdrawを呼び出した時の環境はこうなってて、 (define W1 (make-withdraw 100)) (define W1 (lambda (internal-amount) .. (define W1

    SICPを読む(99) 問題 3.10 - 局所変数の入れ物とフレーム - ボクノス
  • クロージャーを作成する方法 - Perl入門ゼミ

    Perl › サブルーチン › here Perlで「クロージャー」を作成する方法を解説します。 クロージャの定義 クロージャの定義をコードを使って解説します。 use strict; use warnings; # もっともシンプルなクロージャ { # 変数の生成 my $var = 5; sub var { return $var; } } # スコープが終わってもvarサブルーチンに参照されているため、 # $var は存在し続ける。 # var サブルーチンだけが、$var を見ることが可能。 print "1: もっともシンプルなクロージャ\n"; print var(), "\n"; クロージャの定義 クロージャであるための条件は、サブルーチンが、自分のスコープ外のレキシカル変数を参照していることです。( この例では、var が、自分のスコープ外の$var を参照。) クロージ

    クロージャーを作成する方法 - Perl入門ゼミ
  • A Definition of Closures - selflearn @ ウィキ

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

    A Definition of Closures - selflearn @ ウィキ
  • [Common Lisp] loop collect でのクロージャ

    Yoshinori Tahara 横浜市, 神奈川県, Japan 好きなもの: Common Lisp, Kinesis, アーロンチェア, Kensington Expert Mouse 詳細プロフィールを表示 ► 2021 (4) ► 8月 (3) ► 1月 (1) ► 2019 (4) ► 7月 (4) ► 2015 (4) ► 9月 (1) ► 6月 (1) ► 4月 (2) ► 2014 (12) ► 9月 (2) ► 7月 (2) ► 6月 (2) ► 3月 (1) ► 2月 (2) ► 1月 (3) ► 2013 (13) ► 11月 (1) ► 9月 (2) ► 8月 (2) ► 7月 (1) ► 6月 (1) ► 5月 (1) ► 4月 (1) ► 3月 (2) ► 2月 (1) ► 1月 (1) ► 2012 (38) ► 12月 (1) ► 11月 (2) ► 10

  • λ萌え - たらいを後回し : 404 Blog Not Found

    2007年05月13日06:30 カテゴリLightweight Languages λ萌え - たらいを後回し Gauche Nightではしゃぎすぎたところにもってきて、昨日はEncodeをメンテしながらホームパーティーなんぞをしていたらどうやら風邪を引いてしまったみたい。 風邪で頭が痛いときには、λと戯れるに限る、ということでこの話題。 前回までのあらすじ 404 Blog Not Found:たらいを回すならHaskell 404 Blog Not Found:javascriptでもたらいを回してみた 404 Blog Not Found:gaucheでもたらいを回してみた 404 Blog Not Found:C - Judyでたらい回し ここまでのあらすじでわかった事は、遅延評価(lazy evaluation)するHaskellがむちゃくちゃ優秀なこと、遅延評価がない言語で

    λ萌え - たらいを後回し : 404 Blog Not Found
  • 1