2005-09-01から1ヶ月間の記事一覧

javascriptでAspect3

実用性を考えた結果、beforeやafterにはoriginalを渡す方が便利だし、aroundも欲しいということで↓のようになった。 var wrap = function(original,before,after,around){ var func = function(){ if(before){ before.apply(this,[original,arguments]); } v…

javascriptでAspect2

乗っ取りの実行部に約束事が残るのは嫌。なので var wrap2 = function(obj,id,before,after){ obj[id] = wrap(obj[id],before,after); } var obj = { _x:"X", getX:function(){return this._x;} }; // 乗っ取りの実行 wrap2(obj, "getX", function(){alert("…

javascriptでAspect

http://d.hatena.ne.jp/m-hiyama/20050928/1127869442に関してメモ。 単純に関数を乗っ取る場合は下のようにすれば良さそう。 var wrap = function(original,before,after){ var func = function(){ before.apply(this,arguments); var result = original.ap…

javascript

http://d.hatena.ne.jp/m-hiyama/20050808/1123486683の記事を読んでjavascriptを理解した(つもり)。 C言語やJava風の見た目をしているけど、実際には「プロパティを連想配列で実現した関数言語」なのだ。LispならぬHasp(HASh Processor)とでも呼べばよいだ…

各言語のlambda

気になって調べてみた。 python lambda x: x*xjavascript function(x){ return x*x; };Groovy { x -> return x * x }scheme (lambda (x) (* x x))Haskell \x -> x*xOCaml fun x -> x*xC#*1 delegate(int x) { return x*x; }以下、余談。 型を明示する言語で…

pythonのlambdaって

lambdaの定義が複数行にわたるのが許されたとしても文法は破綻しない。だけど、そう扱えるようにはならないのは何故だろう。 func = lambda x: x*x#これが正しい形func = lambda x:#これは出来ない return x*x

メモ

http://dmoz.org/Computers/Programming/Languages/Lisp/Scheme/Implementations/Java-Based/

ちょっと良いことがあった

本人にとっては悪いことなので内容は書かない。

独自言語について考える。

schemeは何でも出来る言語だ。Cも何でも出来る言語だ。どちらも間違っていないが、両者は「何でも出来る」という範疇の中で対極にある。(対極より外側に位置する言語もある。)計算アルゴリズムの問題にはschemeが適しているし、インターフェースカードのドラ…