[#837] request SCAN — Shin-ichiro HARA <sinara@...>

原です。

25 messages 1997/11/14
[#838] Re: request SCAN — matz@... (Yukihiro Matsumoto) 1997/11/14

まつもと ゆきひろです

[#839] Re: request SCAN — Shin-ichiro HARA <sinara@...> 1997/11/14

原です。

[#840] Re: request SCAN — Shin-ichiro HARA <sinara@...> 1997/11/14

原です。

[#841] Re: request SCAN — Shin-ichiro HARA <sinara@...> 1997/11/14

原です。

[#843] Re: request SCAN — matz@... (Yukihiro Matsumoto) 1997/11/14

まつもと ゆきひろです

[#844] Re: request SCAN — Shin-ichiro HARA <sinara@...> 1997/11/14

原です。

[#845] Re: request SCAN — matz@... (Yukihiro Matsumoto) 1997/11/14

まつもと ゆきひろです

[#864] [Req] Proc.new — Shin-ichiro HARA <sinara@...>

原です。

53 messages 1997/11/19
[#865] Re: [Req] Proc.new — matz@... (Yukihiro Matsumoto) 1997/11/19

まつもと ゆきひろです

[#866] Re: [Req] Proc.new — Shin-ichiro HARA <sinara@...> 1997/11/19

原です。

[#867] Re: [Req] Proc.new — matz@... (Yukihiro Matsumoto) 1997/11/19

まつもと ゆきひろです

[#875] Re: [Req] Proc.new — Shin-ichiro HARA <sinara@...> 1997/11/20

原です。

[#877] Re: [Req] Proc.new — shugo@... (Shugo Maeda) 1997/11/20

前田です。

[#879] Re: [Req] Proc.new — Shin-ichiro HARA <sinara@...> 1997/11/20

原です。

[#886] Re: [Req] Proc.new — shugo@... (Shugo Maeda) 1997/11/20

前田です。

[#890] Re: [Req] Proc.new — keiju@... (石塚圭樹 ) 1997/11/20

けいじゅ@日本ラショナルソフトウェアです.

[ruby-dev:892] Re: [Req] Proc.new

From: keiju@... (石塚圭樹 )
Date: 1997-11-20 05:44:51 UTC
List: ruby-dev #892
けいじゅ@日本ラショナルソフトウェアです.

In [ruby-dev :00883 ] the message: "[ruby-dev:883] Re: [Req] Proc.new
", on Nov/20 13:13(JST) matz@netlab.co.jp (Yukihiro Matsumoto) writes:

>まつもと ゆきひろです

>|話しは戻りますが, どうしても関数をオブジェクト化して取り扱えないと行け
>|ないんでしょうか?
>
>もとの話では「Perlが関数のリファレンスが使えるから」というこ
>とでしたね.私の答えは「どうしてもしたかったら,前田さん風の
>メソッドを自分で定義してね」というものにしようかなあ,と思っ
>てます.

ああ. そうでしたよね. でも, 私がそのFAQを書くなら次のようになりますね:

rubyのイテレータに相当する機能がないから, perlやCでは関数のリファレン
ス(ポインタ)を扱うことで代用しています(perlは文字列を渡す方法があるみ
たいですが). 

ほとんどの場合, ある処理手続きを別の関数に渡したいときは, その処理手続
きをその場で書き下せる方が, 全然分かりやすい.

array.sort{|x, y| x > y}

と

qsort(array, size_of_array, size_of_elm, comp_function);

int comp_function(XX x, XX y) 
{
  x > y;
}

とでは前者の方が絶対に分かりやすいでしょ?

って, こんな感じですか...

そういったわけで, イテレータをその場で渡す方法は関数のリファレンスを渡
すよりも優れた方法だと思うのですが, その渡したいイテレータがただ別の関
数を呼ぶだけっていうことも結構あるんですよね...

ですから,

>前田さん風のメソッド:
>
>  def function(name)  
>    proc { |*args| send(name, *args) }
>  end
>
>Procの挙動を変えるのは実装上色々面倒なので避けたいです.

上記の関数と同じ動作を行なうような関数/メソッドが標準でrubyに用意され
ていることは結構意味があることかなと思うんですが...

procの時だけでなくイテレータとして呼ばれた時も何とか対処して欲しいです
が...

array.sort{|x, y| x > y}

array.sort >
array.sort {>}
array.sort func(:>)

みたいに関数のイテレータブロックが渡せる方法があるといいんですが...

# ちょっと無理そうですねえ...

__
................................石塚 圭樹@日本ラショナルソフトェア...
----------------------------------->> e-mail: keiju@rational.com <<---

In This Thread