langsmith:90
From: Shugo Maeda <shugo ruby-lang.org>
Date: Thu, 15 Jul 2004 11:04:31 +0900
Subject: [langsmith:90] Re: 強い型の言語とクロージャ
前田です。 Nobuo Yamashita wrote: > C# らしい記法ということを無視して言ってしまいますが,たとえば, > 整数と文字列を引数にとり真偽値を返す関数(クロージャ)の型を, > > (int,string) x bool > (int,string) -> bool > > とか表現するのはどうですか? どこかでこういう記法を見たような気がします;-) しかし、C#やSatherみたいな文法にはちょっと合わないかもしれません。 ちなみに、SatherだとROUT{INT, STR}: BOOLになりますが、そのままC#風にする と、randyさんが書かれているような記法か、ちょっと入れかえて bool delegate (int, string)みたいな記法になりそうですね。 >>これを見て、いつもCで関数ポインタを受け取る関数を書く・読む時に、typedef >>してないと書きにくい・読みにくいと感じるのを思い出しました。 > > > typedef (int,string) -> bool Foo; > Foo afun; > afun = new Foo (lambda (i,s) { ...})); > > というのはどうでしょう. 結局みんなこういうことをすることになるのなら、 delegate bool Foo(int i, string s); でもいいように思います。 というのはおくとして、上記のtypedefは(int,string) -> boolという型に別の 名前を用意するもので、(int, string) -> boolとFooは完全に同じ型として扱わ れるでしょうか。 というのは、オブジェクトとクロージャの型の扱いはなるべく統一されているべ きだと思うのですが、そうすると、オブジェクトの型もtypedefできるようにす ることになりますよね。 typedefのように、型に別名を与えること全般の是非が問題になりそうです。 > おっ.型推論機構がはいるのですね.(^o^) > それなら, > > afun = new (lambda (i,s) {...}); > > とかも可能になるかも. afunの型が決まればできそうですね。 ただ、今のところの自分の理想は普通の強い型のオブジェクト指向言語なのです が、あまりこのあたりに深入りすると、だんだん違う方向性になってきそうな気 がします。 -- 前田 修吾 -- 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 ]