From haskell-jp=return@quickml.com Thu Sep 29 18:21:02 2005 Received: from kankan.nagaokaut.ac.jp (kankan.nagaokaut.ac.jp [133.44.2.24]) by blade.nagaokaut.ac.jp (8.12.3/8.12.3/Debian-6.6) with ESMTP id j8T9L2RJ028018; Thu, 29 Sep 2005 18:21:02 +0900 Received: from funfun.nagaokaut.ac.jp (funfun.nagaokaut.ac.jp [133.44.2.201]) by kankan.nagaokaut.ac.jp (Postfix) with ESMTP id 8BB0E58EF; Thu, 29 Sep 2005 18:21:02 +0900 (JST) Received: from localhost (localhost.nagaokaut.ac.jp [127.0.0.1]) by funfun.nagaokaut.ac.jp (Postfix) with ESMTP id 80458F0486B; Thu, 29 Sep 2005 18:21:05 +0900 (JST) Received: from voscc.nagaokaut.ac.jp (voscc.nagaokaut.ac.jp [133.44.1.100]) by funfun.nagaokaut.ac.jp (Postfix) with ESMTP id 50DFDF04866; Thu, 29 Sep 2005 18:21:04 +0900 (JST) Received: from master.quickml.com (219-106-226-205.cust.bit-drive.ne.jp [219.106.226.205]) by voscc.nagaokaut.ac.jp (Postfix) with ESMTP id 831F163004D; Thu, 29 Sep 2005 18:21:03 +0900 (JST) Received: from master.quickml.com (localhost [127.0.0.1]) by master.quickml.com (Postfix) with ESMTP id F03231F31D2; Thu, 29 Sep 2005 18:21:02 +0900 (JST) Received: from master.quickml.com (localhost [127.0.0.1]) by localhost (QuickML) with ESMTP; Thu, 29 Sep 2005 18:21:02 +0900 Received: from smtp16.mail.bbt.yahoo.co.jp (smtp16.mail.bbt.yahoo.co.jp [202.93.83.109]) by master.quickml.com (Postfix) with SMTP id C77821F31D2 for ; Thu, 29 Sep 2005 18:21:02 +0900 (JST) Received: from unknown (HELO ASAKISXGA) (asakiasakiasaki@133.30.118.12 with login) by smtp16.mail.bbt.yahoo.co.jp with SMTP; 29 Sep 2005 09:21:01 -0000 X-Apparently-From: From: "Asaki NISHIKAWA" To: Date: Thu, 29 Sep 2005 18:21:01 +0900 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-2022-jp" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Office Outlook, Build 11.0.6353 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180 Thread-Index: AcXEfdj30RdpJqXDR3ON9Zbgq7Ck6AAV9CqA In-Reply-To: <4afad12505092815424f61c755@mail.gmail.com> Message-Id: <20050929092102.C77821F31D2@master.quickml.com> Subject: [haskell-jp:718] Re: Java=?iso-2022-jp?B?GyRCJCskaRsoQkhzc2tlbGwbJEIkWBsoQg==?= =?iso-2022-jp?B?GyRCJE4wXDlUIUobKEJSZTog?= =?iso-2022-jp?B?GyRCOzIyQyQ3JF4kOSEjIUsbKEI=?= Reply-To: haskell-jp@quickml.com X-Mail-Count: 718 Precedence: bulk X-ML-Address: haskell-jp@quickml.com X-ML-Name: haskell-jp X-ML-Info: http://QuickML.com/ X-QuickML: true X-Virus-Scanned: by AMaViS snapshot-20020531 西川です。 丁寧なお返事ありがとうございます。 > ・カプセル化はしない。オブジェクトとメソッド(関数)は分離して考える。 > 当然アクセス制御子などなく、全てpublic (^^; > ・関数が主役。「オブジェクトにメソッドが従属する」のではなく、「オブジェ > クトに関数を適用する」と考える。(ちょっと duck typing っぽい?) > ・手続き型OOPにおける「継承」や「オーバーローディング」はない。代わりに > 型クラスを利用する。 > > という感じかな、と勝手に思っていたりするのですが。(めちゃめちゃ感覚的な > コメントですいません) うーん、やっぱりそうなりますよねえ、 > -- 図形 > class Draw a where > move :: Int -> Int -> a -> a -- x,y座標を指定された分だけ移動 > > -- 点 > data Point = Pt { x, y :: Int } > > instance Draw Point where > move dx dy Pt {x=a, y=b} = Pt (a+dx) (b+dy) > > instance Show Point where > show Pt {x=a, y=b} = "Pt{x="++(show a)++", y="++(show b)++"}" > ------------------------------ > そして、やっぱり上記のようになり、 そうすると、継承ライクなことができないと図形の種類を増やすたびに Drawのメソッドを全て実装&管理する必要があるんですよねえ。 なんかの文書に関数型言語のclass概念は、 図形の種類を増やすような変更に対しては弱いが、 その代わりXXとトレードオフが書いてあったような気がするんですが、 XXが思い出せないかつ実感できないのが残念です。 なので最近は依存性は無視してとりあえず組んで、 後からclass化したくなったらする、というやり方に変えてます(前はclassを先に考 えていた) なにか見当はずれなやり方をしている感はぬぐえないですが。 毎回あいまいかつ感覚的なコメントで申し訳ないです。 -- No virus found in this outgoing message. Checked by AVG Anti-Virus. Version: 7.0.344 / Virus Database: 267.11.8/114 - Release Date: 2005/09/28 -- ML: haskell-jp@quickml.com 使い方: http://QuickML.com/