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

委譲とカプセル化

[id:lethevert:20050904:p1] [id:ha-tan:20050904:1125846075] もし、PrinterオブジェクトがWriterという能力を持っていると解釈するなら、そのまま見せてもカプセル化が壊れているとは思わないですよ。それに、Printerオブジェクトの直下に、大量のメソッド…

Mutable/Immutable

[id:emeitch:20050902] Mutableって、要するに x = createX(); y = x; y.changeValue(); みたいなことがあった時に、「x == y」が成立するかどうかの問題だよね。Mutableなオブジェクトだと、yの変更がxに伝わってしまうので、「x == y」が成立するし、Immut…

SmalltalkのMVC - ViewとModelの理想的な関係の考察

[id:soutaro:20050903] - http://www.jac-net.com/~tarzan/smalltalkers/mvc/mvc.html このURLは、最近見つけたのです。Smalltalkは詳しくないので、ソースコードまで確認していないですが、 モデルは、画面に表示したいオブジェクトそのものです。ところが…

インターフェースにしたい理由

[id:lethevert:20050903:p1] # soutaro 『私は「インタフェースになっていて欲しい理由」が理解できないのです。そこが理解できないので、見当違いかもしれない「インタフェースになっていて”欲しくない”理由」しか考えることができません。』 (2005/09/04 2…

Concurrent Clean : Dynamic

上手くDynamicが使えない。 というか、Cleanのリストの型を型クラスで指定できないので、リストを多態に使用できないことが、そもそもの原因。 ちょっと、困ったな。

実装の共有

継承というのは、純粋に実装の共有をするという目的には、必ずしも適っていないところに問題があるのだと思います。つまり、継承は、振る舞いとその実装の両方を共有する機構であって、その2つを区別できないという問題を持っているのです。 振る舞いのみを…

委譲

[id:soutaro:20050903:1125679890] 委譲って、こういうやつですよね。 class Printer { Writer writer; void write(String s) { writer.write(s); } ... } class Writer { void write(String s) { ... } } これは、私もやらないですね。下のように書けばいい…

memoizeと不動点

[id:lethevert:20050903:p2] できた!! fix g = f where f = g f whereを使えば書けたんだ。 ということで、memoizeも含めたConcurrent Clean版は↓です。(リストの選択に必要な計算量はこの際無視で) module memo import StdEnv Start = map fib [1,2,3,4…

ダイナミックな型システム

[id:m-hiyama:20050903:1125731280] 僕もあまり詳しくないですが、RubyのDuck Typingなんかは、こういうのを上手く扱えそうな気がします。動的にメソッドを追加する場合も、大丈夫かな? でも、Duck Typingって、同音異義語/句に対して弱そうだが、どうなん…

インターフェース

[id:lethevert:20050902:p3] [id:soutaro:20050903] [id:ytqwerty:20050902] WindowsのTreeViewだからだめだという件 Windowsの仕組みからだめなのなら、Windowsのコントロールのデザインが悪いのでしょう。でも、やはり、OSの提供するコントロールは複雑で…

memoizeと不動点

[id:lethevert:20050902:p2] [id:SaitoAtsushi:20050903] (define (fix g) (begin (define (f x) (f x)) (set! f (g f)) f)) やっぱり、Schemeだったら書けるんですねぇ。 でも、「(set! f (g f))」が、あー、という感じ。なんか、代入していることがばれば…

最近、トラフィック増えてきたな。

つい、この間までは、一人でつぶやき系のBlogだったのに、最近はTBやらコメントが随分増えてきた。言葉遣いとか、気をつけたほうがいいのかな? 荒れるとヤダな。 でも、あまり気にしないで、言いたい放題Blogでいたいんだよね。 あ、TB、コメントいただいて…

GUIコンポーネントとインターフェース

[id:soutaro:20050901:1125614439] GUIにデータを表示するために、オブジェクトにGUIのためのインタフェースを実装しておくことは、不自然な気がします。いや違うな。不自然とかじゃなくって、経験的にそれはやらないな、と思うわけですね。特に、Delphiとか…

GUIコンポーネントとインターフェース(2)

[id:lethevert:20050902:p1] [id:ytqwerty:20050902] インターフェースのシリアライズ Interfaceをそのままシリアライズすることができないことは、理解してますよ。でも、できると思えば、簡単な回避方法はあります。 下のように(今度はDelphi形式で)すれ…

memoizeと不動点

[id:lethevert:20050901:p4] あ、[id:Nabetani:20050901:p2]で、C++版を書いてある。 int call( func_t * f, int x ) { return (*f)(x); } void fix( maker_t g, func_t & f ) { func_t x = bind( call, &f, _1 ); f = g(x); } bindがみそ? - せっかくだか…

memoizeと不動点

[id:lethevert:20050829:p8] http://www.kmonos.net/wlog/52.php#_0308050827 function fix(G) { function f(x) { return f(x) } f = G(f) return f } これ、JavaScriptだから可能なコードだよね。あ、ということは、Lisp系でも大丈夫かな? でも、それ以外…

ダウンキャスト

ところで、[id:lethevert:20050831:p3]のやり方だと、ダウンキャストも減らせそうなんだよね。ダウンキャストってなるべく避けたいんだけど、DelphiのGUIコンポーネントを使っていると、どうしてもダウンキャストが避けられないんだよ。Javaのように総称型の…

DelphiのIDE

[id:ytqwerty:20050901:p1]の記事に載っていたhttp://cake.dyndns.org/hwold/index.php?Delphiトップページだけを読んで、確かに、DelphiのDFMファイルというのは、いいアイデアなんですよね。Javaみたいに、GUIコンポーネントのプロパティをソースで書くの…

評価とモチベーション

評価って、むしろあるよりない方が、モチベーションの維持は楽なんだよね。しかも、これは、高評価をもらっても、低評価をもらっても、同じなんだよね。永遠に高評価をもらいつづけることが決まっているなら別だけど。