タグ

rubyとlambdaに関するyuguiのブックマーク (16)

  • Ruby の本読書会 第三回への道のり, Ruby の本読書会 第三回, 371.2km/17.7L - 実験的「実験的日記」(2006-12-21)

    _ Ruby読書会 第三回への道のり 今回は参加。まだ空きがあるようだ。 追記: 十分余裕を持って出発できるはずだったのに、ガブが外から戻ってきて、普段は一度にそんなにべないのに今日に限ってべるので何度か餌入れに餌を入れてやってたら(もしかしたらとは思ってたけど)吐いて、後片付けをしているうちに時間がなくなってて焦りつつ出発。 秋葉原駅に着いたのは七時二十五分。ダイビルまでダッシュしてギリギリ間に合った。今回は第一回と違って人数が少ないなと思いながらどこに座ろうかと見回したら参加者リストにはいなかったはずのたださんを発見。 _ Ruby読書会 第三回 初心者グループで第四章「コンテナ・ブロック・イテレータ」を読んだ。後半の「ブロックとイテレータ」の項目でじっくり話を聴きたかったのだけど、前半でかなり時間がかかってしまって残念ながら最後のほうはかなり駆け足。でも、話された内容

    yugui
    yugui 2006/12/23
    やっぱりFile.openのブロックつきバージョンのなかった時代もあったのだなぁ。私ゃ中世(1.4)の出身だから。
  • メソッド、ブロック、クロージャ | METAMATE

    Rubyの一番のウリと言えばブロック引数メソッドでしょう。 メソッド(関数)とクロージャとブロックの関係についてちょっと掘り下げてみました。 普通のメソッド定義はdef...endで定義します。 def hello name puts "hello, " + name end hello "taro" => hello, taro Rubyでは関数は全てクラスに属するので関数=メソッドです。 トップレベルで定義をした場合はObjectクラスのメソッドになります。 self.class => Object Object.method_defined? :hello => true メソッドはファーストクラスではありません。 ファーストクラスとは以下の4つを満たす言語要素のことです。 1. 名前を付けられる 2. 関数の引数に渡せる 3. 関数の戻り値にできる 4. データ構造の

  • Matzにっき(2003-06-16)

    << 2003/06/ 1 1. [教会]安息日 2. 昼寝 3. [車][UI]エラーは饒舌に 4. [日記]祝1ヶ月 2 1. [] 『ツバサ』+『×××HOLIC』 ≒ 『バイオレンス・ジャック』 2. [OSS] オープンソースとフリーソフトウェア 3 1. [OSS] 日発オープンソース支援 2. [OSS] 俺定義 3. [Ruby] コミットミス 4 1. [OSS]オープンソース俺定義リスト 2. [OSS]開発者と利用者 3. [車]タイヤ交換 4. 献血 5 1. [OSS]開発者の憂 6 1. [OSS]俺定義リスト 2. [家族]温泉 3. []『エルマーのぼうけん』ふたたび 7 1. [OSS]反『オープンソースの定義』原理主義者 2. [OSS]戦略を練る 3. [OSS]開発者の不安 4. 雷 5. [TV]『学園戦記ムリョウ』 6. [OSS]Rub

  • 継続

    URL: http://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=継続 Last-Modified: Thu, 29 Dec 2005 11:37:10 JST (2y(1011d)) Link: [捨てたくなる理由 (3y(1101d))]

  • Martin Fowler's Bliki in Japanese - CollectionClosureMethod

    http://martinfowler.com/bliki/CollectionClosureMethod.html (detectとinject部分を明確にするよう更新) Smalltalkでプログラミングを始めたときから、コレクションクラスが好きでした。 よく使う強力なオペレーションを簡単に使うことができました。 Javaが登場したとき、このようなメソッドがなくなって物足りないと感じました――Java(およびC#)のコレクションは、Smalltalkのそれと比べて非常に限定されたものでした。 というのも、JavaにはClosureが実装されていなかったからです。 Smalltalkの強力なコレクションのメソッドは、すべてクロージャに依存しています。 近年、私はRubyで頻繁にプログラミングをするようになりました。 Rubyに引き付けられたのは、Rubyには強力なコレクションメソッドがあ

  • るびま

    『るびま』は、Ruby に関する技術記事はもちろんのこと、Rubyist へのインタビューやエッセイ、その他をお届けするウェブ雑誌です。 Rubyist Magazine について 『Rubyist Magazine』、略して『るびま』は、日 Ruby の会の有志による Rubyist の Rubyist による、Rubyist とそうでない人のためのウェブ雑誌です。 最新号 Rubyist Magazine 0058 号 バックナンバー Rubyist Magazine 0058 号 RubyKaigi 2018 直前特集号 Rubyist Magazine 0057 号 RubyKaigi 2017 直前特集号 Rubyist Magazine 0056 号 Rubyist Magazine 0055 号 Rubyist Magazine 0054 号 東京 Ruby 会議 11 直

    yugui
    yugui 2006/07/15
    「Continuation 嫌いな人増やしましょう。」ちょwww
  • http://cappuccino.jp/keisuken/logbook/20060529.html

  • まつもと直伝 プログラミングのオキテ 第5回(2)

    ブロックを使う2つの方法 Rubyのブロックについてもう少し詳細を見てみましょう。Rubyのブロックはメソッド呼び出しに付加できるコードの塊であって,それ自身はオブジェクトではありません(ブロックをオブジェクト化したものがクロージャです)。渡し方も通常の引数とは違います。次のメソッド呼び出しを見てください。 ary.each {|x| puts x} このコードを観察すると,以下のようなことが分かります。 ●aryオブジェクトのeachメソッドが呼び出されている ●通常の引数はない ●ブロックが付加されている メソッドから渡されたブロックを利用する方法は2つあります。一つは「ブロック引数」でブロックを受け取ることを明示的に宣言する方法,もう一つは予約語yieldを用いる方法です。図6[拡大表示]ではブロック引数を用いています。配列に対する繰り返し処理を進めるeachメソッドが定義されていま

    まつもと直伝 プログラミングのオキテ 第5回(2)
  • http://rubyforge.org/cgi-bin/viewcvs.cgi/blockutils/?root=blockutils

  • メモ: フィルタとカリー化とブロックの合成

  • String#succ - (new Hatena).blog()

    g:subtech:id:secondlife:20060530:1148996760 経由で p (1..n).inject(s) {|x,| x.succ}という表現を見てちょっと衝撃を受けました。 "n" は数値、"s" は文字列で、n 回分文字列を succ する (C 言語系の "++" みたいなもの) 方法を表したものです。 例えば n が 10 で s が "a" ならば "k" がプリントされるわけです。 この表現が生まれた経緯については上のリンク先を見ていただくとして、私個人的に驚いたのは、「オブジェクトに対してメソッドを繰り返し適用する」ことと、「その結果を得る」ことを、「範囲#inject」の一文だけで済ませている、という点です。 つまり、(私のように) まだあまり inject に慣れていない思考回路の人ならこうしていたと思うんですね (in JavaScript)

    String#succ - (new Hatena).blog()
  • Borges Home

    Homepage for the Borges web application frameworkBorges is a continuation-based web application framework originally ported from on Seaside 2 that allows a linear style of programming of web applications. Components of a Borges web page can call and return from each other in a natural way, allowing complex interaction between components from simple methods. Backtracking is supported seamlessly, al

    yugui
    yugui 2006/05/27
    Continuation-based web application framework
  • フィルタ (2) - babie, you're my home

    長い道のりだった……、id:babie:20050921:p7 の続き。って9月かよ! PHP の Smarty や Perl の TT のように 「|」 でフィルタチェインができたらええなー、と考えてたやつ。 カリー化を使ったお! 使えるお! もっと簡単な実現方法があっても気にしない。カリー化使えて満足。 #!/usr/bin/ruby # this method was written by HORIKAWA Hisashi. # See: http://www.nslabs.jp/ramble-200601.rhtml#28 def currying(name, *args) if name.kind_of?(Proc) or name.kind_of?(Method) m = name else m = method(name) end arity = m.arity >= 0 ?

    フィルタ (2) - babie, you're my home
  • 仮想的な無限列(3) - rubyco(るびこ)の日記

    昨日の続きで、無限列を考えています。zipの意味を変えて少し整理しました。 class Sequence < Proc def self.create(*a, &block) self.new(&block).define(*a) end def define(*a) lambda { return a[0], self.call(self, *a) } end end class Proc def to_s(n=10) return "..." if n == 0 x, xs = self.call() x.to_s + ", " + xs.to_s(n - 1) end def drop(n) return self if n == 0 _, s = self.call() s.drop(n - 1) end def zip(s, t) x, xs = s.call() y, ys =

    仮想的な無限列(3) - rubyco(るびこ)の日記
  • フィボナッチ数列、もっと - rubyco(るびこ)の日記

    おとといのフィボナッチ数列の続きです。id:sumimさんが、call/cc を使ったコルーチンもどきでフィボナッチ数列という楽しいプログラムを書いていらしたので、便乗させていただきました。 違うところは、callccで保存する環境を直接ローカル変数にしたのと、あちこちリネームしたのと、元のresumeというprocをインライン展開したのと、unlessを修飾子にした点です。 fib_loopのほうはフィボナッチ数列を作り出す無限ループになっていて、fib_nextを呼び出す20.timesのループと協調しながら(コルーチン的)動いています。 # Based on http://d.hatena.ne.jp/sumim/20060417/p1 continue = output = nil fib_loop = proc {|a, b| loop { callcc {|continue|

    フィボナッチ数列、もっと - rubyco(るびこ)の日記
  • Matzにっき(2004-07-23)

    << 2004/07/ 1 1. [OSS]「オープンコミュニティーの確固たる盟主」をアピールするSunのマクニーリーCEO 2 1. [morg]基設計完 3 1. [家族]希少生物発見 4 1. [教会]松江 5 1. [morg]実装フェーズ 6 1. [OSS]Javaのオープンソース化で苦悩するサン--レッシグらの助言も 2. CNETにトラックバックが届かない 3. Sunと互換性 7 1. [OSS]オープンソースによる互換性の喪失 8 1. [OSS]SunがJavaをオープンソース化した方が良い4つの理由 2. [morg]バックエンドほぼ完了 9 1. 健康診断 2. Estraier 3. [Morg]フロントエンド 4. [OSS]風博士 5. [OSS]フォークと互換性 6. 期日前投票 10 1. [家族]図書館 2. [OSS]風博士(2) 11 1. [教

  • 1