@pokarim Arrow おもしろいですよね。あんまりまだ理解できてないですが。 http://bit.ly/dtM0xy http://bit.ly/d7UBP1
2010-07-02 12:52:13@igeta インスタンスからインスタンスへの関数(実体はハッシュ)さえあれば"属性"自体いらないと思います。極端ですけど。実はオブジェクトが属性を所有する、という見方が諸悪の根源なのではと思ってます。
2010-07-02 13:03:56@igeta 違います。変更可能かどうかではなくAttributeやプロパティを、インスタンスをとって値を返す関数とみるということです。そうすると属性的なものも関数合成できたりします。関数型データベースモデルではそういう見方をするので汎用言語に応用できないかなと。
2010-07-02 14:14:47@igeta そうです。シンタックスは適当ですが、たとえば d = (a>>b>>c)とかすると、x.dがx.a.b.cと同義になったら便利かなとか。属性がクラスにぶら下がらずに独立してファーストクラスだとなにかと便利だと思うんですよね。
2010-07-02 14:36:52面白い RT @pokarim: @igeta そうです。シンタックスは適当ですが、たとえば d = (a>>b>>c)とかすると、x.dがx.a.b.cと同義になったら便利かなとか。属性がクラスにぶら下がらずに独立してファーストクラスだとなにかと便利だと思うんですよね。
2010-07-02 14:39:28@igeta @kmizu ActiveRecordパターン使ってるときに、ある属性や、属性取得のチェーンに対して制約条件を課したり、特定の属性を組み合わせて、RDBのビューのようなものを作ろうとしたときに、属性を文字列としてしか指定できないのは微妙だなと思ったんですよね。
2010-07-02 14:51:41@pokarim なるほど。ただ、ぱっと思ったのは、属性をファーストクラスオブジェクトとして扱えるというだけだとそれには不十分で、もうちょっとその概念を一般化した何かが作れそうな気がするんですよね。それが何かはよくわからないですが。
2010-07-02 14:53:09@kmizu 私は関数としてのインターフェースがあって、合成でなくatom的なものであれば内部はハッシュを持っていて変更可能であれば十分と思っています。>ファーストクラス属性 あとは逆方向の属性を生成したり直列・並列合成をするようなコンビネータを用意するというのはどうでしょうか。
2010-07-02 15:06:38たとえば整数型の属性であれば、liftした四則演算子を用意するとポイントフリーで属性から属性が定義できる。体重と身長という属性がある時BMI値を、BMI=体重/身長^2という式でBMIというgetのみset不可な属性が定義できたらいいな、とか。>ファーストクラス属性
2010-07-02 15:15:16@pokarim すいません。実はあまりきちんと考えていたわけではないのですが、たとえば、属性だけじゃなくてメソッドなども含むクラスのメンバ全てを統一的に扱いたいなーとか。 fooBar(x) = ?.foo.bar(x); obj.fooBar(x) みたいな。
2010-07-02 15:17:10@kmizu 属性を自分自身だけをとる関数とすれば、メソッドは加えて他のオブジェクトも引数にとる関数になるので、タプルに対する属性とする、もしくはカリー化的に他のオブジェクトを引数にとる関数が属性の値としてとれる、のどちらかで統一的に扱えると思いますがどうでしょう。
2010-07-02 15:25:36