[前][次][番号順一覧][スレッド一覧][生データ]

langsmith:238

From: Yukihiro Matsumoto <matz ruby-lang.org>
Date: Mon, 30 May 2005 23:48:06 +0900
Subject: [langsmith:238] Re: duck typing?

まつもと ゆきひろです

In message "Re: [langsmith:233] Re: duck typing?"
    on Wed, 25 May 2005 17:30:48 +0900, "Kota Mizushima" <hau51010 tree.odn.ne.jp> writes:

|> structural conformanceと呼ぶ人もいるようですね。
|> structureかというと、微妙な気もしますけれど。
|
|型の外部から見た構造(!=内部構造)ということで、structureでいい気がします。

ふつー、structure conformanceというと、型が同じかどうかの判
定を、同一(同じ名前の)構造体かどうかではなく、同じ型のメンバ
が同じ順序で並んでいるかどうかで行うことだと思います。また、
structureっては「造り」を意識した単語だと思うので、「外部か
ら見た構造」ってのはヘンな気がします。

以前、signature conformanceという単語を聞いたことがあるよう
な気がしますが、どこでだったかな。

|> こういうのと、型推論を組み合わせたらどうかなあと妄想したことは
|> ありましたが、どうなんでしょうね。
|> たとえば、
|>
|>   void print(s)
|>   {
|>     stdout.print(s.to_s());
|>   }
|>
|> とメソッド定義した時に、void print(ToString s)とみなすとか、
|> さらにはToString相当の型が見つからなかったら自動的に作って
|> しまう(メソッドのシグニチャの集合だけで型適合するなら型名は
|> 何でもいい)とか。
|
|この場合、返り値が引数で渡されているから良いですが、返り値が
|捨てられるような場合、どうするんでしょうか。パラメータ型を返すように
|するとかでしょうか?

学生時代(えっらい前だな)、「型というのをプログラム中でその式
に適用しているメソッド集合によってだけ表現する型(名前は付け
ない)」というのを夢想したことがあります。型というのは全文検
索のシグナチャ法と類似のビットマップを用いて表現するわけです。
で、ビットアンドをとると型適合しているかどうかわかる、と。

実装が大変なわりに、見過ごす型エラーが多そうなので実際に試し
てみるところまでいかなかったんですが。

                                まつもと ゆきひろ /:|)

--
ML: langsmith quickml.atdot.net
使い方: http://www.atdot.net/~ko1/quickml

[前][次][番号順一覧][スレッド一覧][生データ]

       228 2005-05-21 18:46 [hio hio.jp          ] 参加希望します                          
       229 2005-05-22 23:42 ┗[matz ruby-lang.org  ]                                       
       230 2005-05-23 23:20  ┗[hio hio.jp          ]                                     
       231 2005-05-24 01:12   ┗[matz ruby-lang.org  ]                                   
       232 2005-05-25 11:24    ┗[shugo ruby-lang.org ] duck typing?                    
       233 2005-05-25 17:30     ┗[hau51010 tree.odn.ne]                               
       234 2005-05-25 18:24      ┣[shugo ruby-lang.org ]                             
->     238 2005-05-30 23:48      ┗[matz ruby-lang.org  ]