Hatena::ブログ(Diary)

Smalltalkのtは小文字です

id:sumim:about

Smalltalk を本格的に勉強する気はないけれど、うんちく程度に知っておきたいなら→Smalltalkをちょっとかじってみたい人のための、チュートリアルまとめ - Qiita

オブジェクト指向の“モヤッと”の正体を知りたくなったらこちらの記事が役に立つかも→id:sumim:20080415:p1 とか id:sumim:20040525:p1


 | 

2010-09-12

[] “斜め方向から fib を高速化する方法”を JavaScript で


SpiderMonkey がタコなのか、はたまた私の JavaScript力がたんに足りないだけなのか、いずれにしてもかなりひどいことになってしまっていますが、JavaScript で許されている範囲で件の Squeak Smalltalk ならではの「斜め」を実現しようとすると、こんなふうになります。まあ、Smalltalk は読めない…という方に、雰囲気だけでもお伝えできればと。


function fib(n) {
  function fib1(n, a, b) {
    if(n>1) fib2(n-1, a, b);
    var my = arguments.callee;
    var mine = a+b;
    var caller = my.caller;
    var k = 3;
    while (caller && --k) {
      caller.arguments[k] = mine;
      caller = caller.caller
    }
    return a+b
  }
  function fib2(n, a, b) {
    if(n>1) fib3(n-1, a, b);
    var my = arguments.callee;
    var mine = a+b;
    var caller = my.caller;
    var k = 3;
    while (caller && --k) {
      caller.arguments[k] = mine;
      caller = caller.caller
    }
    return a+b
  }
  function fib3(n, a, b) {
    if(n>1) fib1(n-1, a, b);
    var my = arguments.callee;
    var mine = a+b;
    var caller = my.caller;
    var k = 3;
    while (caller && --k) {
      caller.arguments[k] = mine;
      caller = caller.caller
    }
    return a+b
  }
  return fib1(n, 0, 1)
}

追記:

id:edvakfさんが、すっきりと書き直してくださいました。

トラックバック - http://d.hatena.ne.jp/sumim/20100912/p1
 | 
2004 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2012 | 01 | 02 | 03 | 04 | 05 | 06 | 08 | 10 | 12 |
2013 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 11 | 12 |
2014 | 01 | 02 | 05 | 07 | 08 | 09 | 10 | 11 |
2015 | 04 | 07 | 08 | 11 | 12 |
2016 | 02 | 03 | 06 | 07 | 08 |
2017 | 04 | 05 | 06 |

最近のコメント

1. 06/28 sumim
2. 06/28 squeaker
3. 06/28 sumim
4. 06/28 squeaker
5. 06/25 sumim

最近のトラックバック

1. 05/25 プラグインレスでSVGを表示する「SIE」開発ブログ - メッセージをや...
2. 01/30 no_orz_no_life - Erlangとジャンケン
3. 12/31 檜山正幸のキマイラ飼育記 - J言語、だってぇー?
4. 09/04 Twitter / @atsushifx
5. 07/06 みねこあ - オブジェクト指向 と FizzBuzz

この日記のはてなブックマーク数
1852754