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

langsmith:89

From: Nobuo Yamashita <nobsun sampou.org>
Date: Thu, 15 Jul 2004 01:50:40 +0900
Subject: [langsmith:89] Re: 強い型の言語とクロージャ


> > 前者の記法と、後者の記法って対立する概念
> > なのでしょうか?
> 
> 対立するかどうかはわかりませんが、両立できるとしても、かならずしも両方
> あった方がいいとはかぎらないのではないでしょうか。
> ですので、両者(あるいはもっとよい方法があれば、それも含めて)の得失につ
> いて考えたいと思っています。
> # 前のメールの後者については、記法はあまり深く考えてなかったので、もっと
> # よい記法があるだろうと思います。

C# らしい記法ということを無視して言ってしまいますが,たとえば,
整数と文字列を引数にとり真偽値を返す関数(クロージャ)の型を,

(int,string) x bool
(int,string) -> bool

とか表現するのはどうですか?

> これを見て、いつもCで関数ポインタを受け取る関数を書く・読む時に、typedef
> してないと書きにくい・読みにくいと感じるのを思い出しました。

typedef (int,string) -> bool Foo;
Foo afun;
afun = new Foo (lambda (i,s) { ...}));

というのはどうでしょう.

> 型があるとどうしても記法が複雑になるので、省略できた方がうれしいとはかぎ
> らないのではないでしょうか。
> 
> ただ、クロージャを生成してメソッドに渡す側では、型を省略できるとうれしい
> 気がします。
> 
> たとえば、
> 
>   Bar(new delegate bool(int i, string s){
>     ...
>   });
> 
> これは、Barが要求する型からクロージャの型を推測できるので
> 
>   Bar(new delegate {
>     ...
>   });
> 
> と書くだけでよいことにすることもできますよね。
> その代り、オーバーロードの制約は増えますけれども。

おっ.型推論機構がはいるのですね.(^o^)
それなら,

afun = new (lambda (i,s) {...});

とかも可能になるかも.

--nobsun

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

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

        76 2004-07-13 12:42 [mogami brain.riken.g] 変更可能なclosure変数、対、static変数   
        77 2004-07-13 13:42 ┣[nobsun sampou.org   ]                                       
        78 2004-07-13 15:07 ┣[maeda-langsmith atus]                                       
        80 2004-07-13 19:58 ┃┣[mogami brain.riken.g] Re: 変更可能なclosure変数、対、sta  
        81 2004-07-14 01:52 ┃┗[shugo ruby-lang.org ] 強い型の言語とクロージャ            
        84 2004-07-14 15:02 ┃ ┣[takuo aya.or.jp     ]                                   
        86 2004-07-14 23:32 ┃ ┃┗[shugo ruby-lang.org ]                                 
        85 2004-07-14 20:52 ┃ ┗[randy mvd.biglobe.ne]                                   
        87 2004-07-14 23:59 ┃  ┗[shugo ruby-lang.org ]                                 
        88 2004-07-15 00:04 ┃   ┣[shugo ruby-lang.org ]                               
->      89 2004-07-15 01:50 ┃   ┗[nobsun sampou.org   ]                               
        90 2004-07-15 11:04 ┃    ┗[shugo ruby-lang.org ]                             
        79 2004-07-13 14:43 ┗[matz ruby-lang.org  ]