[#34647] fork 不可能な環境での test_argv0_noarg — wanabe <s.wanabe@...>

ワナベと申します。

13 messages 2008/05/11
[#34667] Re: fork 不可能な環境での test_argv0_noarg — Yukihiro Matsumoto <matz@...> 2008/05/13

まつもと ゆきひろです

[#34742] Ruby 1.8.7-preview3 has been released — "Akinori MUSHA" <knu@...>

 Ruby 1.8.7-preview3 をリリースしました。

14 messages 2008/05/18
[#34744] Re: [ruby-list:44957] Ruby 1.8.7-preview3 has been released — Takahiro Kambe <taca@...> 2008/05/19

お疲れ様です。

[#34800] Windows2000上でtrunkがビルドできない — KIMURA Koichi <kimura.koichi@...>

木村です。

18 messages 2008/05/22
[#34801] Re: Windows2000上でtrunkがビルドできない — "U.Nakamura" <usa@...> 2008/05/22

こんにちは、なかむら(う)です。

[#34824] Re: Windows2000上でtrunkがビルドできない — KIMURA Koichi <kimura.koichi@...> 2008/05/23

木村です。

[#34850] Re: Windows2000上でtrunkがビルドできない — KIMURA Koichi <kimura.koichi@...> 2008/05/26

木村です。

[#34854] Re: Windows2000上でtrunkがビルドできない — "U.Nakamura" <usa@...> 2008/05/26

こんにちは、なかむら(う)です。

[#34889] Ruby 1.8.7-preview4 test-all failed in OpenSSL::TestSSL — Nobuhiro IMAI <nov@...>

いまいです。

10 messages 2008/05/29

[ruby-dev:34621] Re: ComplexFloat

From: keiju@... (石塚圭樹)
Date: 2008-05-08 17:04:26 UTC
List: ruby-dev #34621
けいじゅ@いしつかです.

なんか, 大作になってしまいました(__;

In [ruby-dev :34614 ] the message: "[ruby-dev:34614] Re: ComplexFloat
", on May/08 18:37(JST) Yukihiro Matsumoto writes:

>まつもと ゆきひろです

>Complex::/でquoを使えば当面の問題は解決しませんか?

のはずです. 

>|私としてはあえていいますが, 

>|>|4. complex が常に mathn を require する。
>|
>|であり, かつcomplexが組み込みってことは常に4(/の振る舞いにかんしては)
>|とするってことです. やはり, /とquoの使い分けは結構難しいと思います(そ
>|れなりにわかっている人でさえも). これは, ふなばさんが以前に指摘してい
>|る通り, /に足そうせいが成り立っていないせいで起こっている問題です. プ
>|ログラマに優しくないことはRubyの精神に反しているってことで, 4の方針に
>|一気に行きましょう!!
>
>うーん、個人的には2.0まで待ちたかった変更なのですが。かなり
>影響が大きいので、まだ1.9.0とはいえ、これから導入するのには
>ためらわれます。

自分で提案していてなんなんですが(^^;

それは導入を前向きに考えているってことです?

それだとしたら, (かなり(^^;)将来の話であるとしても, そういう話であるな
ら, それを前提とした対応をしていくロードマップを考えていかなくてはなら
ないと思います.

>|4にすると何が起こるかの確認です:

>これはRationalリテラルの導入(1/2が有理数になる)や、
>Rational#to_sのフォーマット変更を含むのでしょうか。

>また、Complexに対してもリテラル導入(1+2iとか)を検討するのでしょ
>うか。

リテラル導入に関しては全く考えていなかったです. /に関してはリテラルは
難しいですよね? int/int は rational だけども, その他は 違うとか,.,. 難
しいと言うか面倒かな? 

complexに関しては, ほんと今更なんですが.... 実は正直言って組み込みにし
たくなった理由がよく分からないのですが, 本気で組み込みにするなら今の状
況はちょっと中途半端かなと思っています. 

rational(有理数)は四則演算中に必然的に出てくる概念です. つまり, 整数の
割り算を(代数的に)拡張すると自然に有理数の概念(クラス)は出てきます. と
いうことで, 昔から/で有理数をって話は私以外の人からもかなり出てきてい
ます.

んで, 複素数ですが, 整数(を含む実数の)四則演算では必要になることはあり
ません. では, どこで必要になるかというと, sqrtや超越関数の逆関数(log等)
です. なのに, CMathって話が出ているので, なら, 複素数は特に組み込みに
する必要ないじゃん?  って感じなんですよね...

Python等は, sqrt等でcomplexが帰ると予想外のバグが起こる可能性があると
いうことで, エラーを返すと言っていますが, それって, Pythont流の考え方
であって. 動的型システムを持ちかつその有用性を信じるオブジェクト指向道
を歩んできたRuby的には違うんじゃないって思っています.

sqrtで複素数がかえってもそのあとのプロロコル不一致または, 結果が複素数
になる等で簡単にバグが分かるはずだと思っています. 気になるのは一度複素
数が帰ってもそのあとの演算結果によって偶然実数になるってことなんですが,
それって, かなり数システムの根本に関するもので, 本当にもし実数に戻るこ
とがあるならそれは実はもともと正しい結果を返していることになっているこ
とが多いと思います.

ex)

  -1.sqrt => 本来はエラー
  (-1.sqrt)*(-1.sqrt) => 本来はエラー

  -1.sqrt => Complex(0,1)
  (-1.sqrt)*(-1.sqrt) => -1(正しい値)

何が言いたいかというと Pythonで言っている指摘はそれほど的確とは言えな
く, 本来エラーであるべきところはやはりエラーになるし, そうでないところ
は逆にちゃんと計算できるようになってうれしいはずってことです.

# coerceの話じゃないですが, 一度floatに落ちたものが整数に戻ることはめっ
# たにないって話と似ています.

ということで, 私の結論ですが,

complexを組み込みにするなら, CMath相当も組み込みにすべき, そうでないな
ら, complexを組み込みにしないで, 拡張ライブラリにし, かつCMath相当もそ
の拡張ライブラリに入れる.

私としては, 当然前者を推選しますが(^^;

あと, リテラル表現に関してですが, RationalもComplexも無理にリテラルが
なくて張って状況ではないと思います.

(演算として) 1/2 => Rational(1,2)

になるなら, 演算していてもリテラル的なので,それ以上を望む必要もないか
と個人的には思っています. 

複素数に関しては, リテラル的な表現は難しいというか, さすがに:

  1 + 1i

をリテラルにしろって人はいないと思います. やはり,

  %C(1, 1)

とかでいいのでは? そうすると, Rationalもって話になるんですが,

  %R, %r

も使われているし, あと分かる人には分かる

  %Q, %q

も使われているし, ちょっと悩むところなのですが...



__
---------------------------------------------------->> 石塚 圭樹 <<---
---------------------------------->> e-mail: keiju@ishitsuka.com <<---

In This Thread