タグ

遅延評価に関するfumokmmのブックマーク (3)

  • Groovy 応用: 遅延評価によるフィボナッチ数の計算

    2009.4.8 (鈴) 1. はじめに 2. 遅延評価の実験 3. Promise クラス 4. フィボナッチ数の計算 5. おわりに Groovy 目次 1. はじめに Scheme に見られるような delay と force を定義して Groovy に遅延評価の機能を導入し,その上にフィボナッチ (Fibonacci) 数の無限データ構造を構築する。 その過程を通じて,入門編で十分に紹介できなかった Groovy の機能のいくつかを読者に紹介する。 2. 遅延評価の実験 遅延評価 (lazy evaluation) とは,式の値が実際に必要になるまでその評価を遅延する評価方法である。 問題によっては,遅延評価を使うとエレガントに解くことができる。 いくつかの例を より実用的な L2Lisp.rb / 付録: 簡単な遅延評価のプログラム例 に示した。 プログラミング言語 Schem

  • visible true : Scalaで無限リストを使ってフィボナッチ数列

    2010年10月22日00:53 カテゴリScala Scalaで無限リストを使ってフィボナッチ数列 元ネタ:基礎を終えた人のScalaミニtipslazy val fib: Stream[Int] = Stream.cons(0, Stream.cons(1, fib.zip(fib.tail).map(p => p._1 + p._2)))これ、Scalaで無限リストと遅延評価でフィボナッチ数列を実現してるんですが、 もう、何やってるかぜんっぜんわからなかったので、がんばってみました。 登場人物lazy valStreamStream.consStream.zipStream.tailStream.map_1, _2という表現Stream.takeこれ、これらが判ればきっと解る! 1.lazy val 遅延評価! valとかにlazyとか付けると遅延評価になります! 遅延評価ってなんだ

    fumokmm
    fumokmm 2011/01/22
    展開のしかたが面白い記事。Scalaで遅延評価する場合はlazyね。
  • 遅延評価やってみた - uehaj's blog

    OKIソフトウェアさんの「Groovy 応用: 遅延評価によるフィボナッチ数の計算」という記事があり、大変興味深いのです。もうちょっとシンプルにできるか&リスト処理をGroovyで少しきれいにかく方法はないか、と思ってやってみました。 「クロージャが遅延評価されるリスト」というクラスを作る。このリスト中のクロージャは遅延評価される。 nthの代わりにgetAt first,tailをプロパティ化し強制評価に使用。 リストリテラルからの変換はas演算子でできるようにasTypeメソッドをEMCに突っ込む という感じ。ここまでくると、今にもdefunとかevalとかapplyとかcondとか付け足して「Lisp DSLだ」とか言いたくなる訳ですが、それはリストでやるよりビルダーで表記すべきか。出かけますのでまた別の機会に考えるとしよう。 題の遅延評価については、別に特殊なことではなくて、値を

    遅延評価やってみた - uehaj's blog
    fumokmm
    fumokmm 2010/12/26
    これはすごい。Groovyできれいに遅延でフィボナッチできている。
  • 1