ごとけんです

# ruby-math / ruby-lang.org はナイらしい…

In message "[ruby-math:00390] Re: Cast"
    on 01/02/24, IKEGAMI Daisuke <daisu-ik / is.aist-nara.ac.jp> writes:
>それともこういう要求が出るのはクラスの設計が悪かったということでしょうか.
>
>例: 多変数多項式 -(変数の割算などによる消去) -> 一変数多項式

こういう reduction はよくありますね。コンストラクタに一様性
を与えるなんらかの方法は必要だと感じます。

>また,同値関係をクラス間で持ちたいときに == の再定義だけだと
>あちらこちらで if a == b then を書かなければいけなくて面倒です.
>クラス間の同値関係を面倒でなく書く方法はないでしょうか.
>クラスの移譲ができると,== による同一視でなしに,同値なクラスと
>見倣せるような気がして便利そうです.

同値関係ということで

  x == y ⇔ f(x) = f(y)

  # x∈A1, y∈A2, A1,A2⊆A and f:A→A

としてよりgeneralな型(モジュール) A を導入してそこの上の写像 
f を定義する手が思いつきます。ただ適切なAがいつもとれるかど
うかは場合によるでしょう。

この問題は以前松尾さんが言われていた写像の型と coercing の拡
張案と重なる部分もあるでしょう。つまり数学的対象が持つ機能の
多重性をis_a?を使った機能の切り替えで解決することのヨシアシ
が問われていると思うのです。Rubyではクラスのなかで関数を定義
しますが、数学的の写像は外から定義するように感じます。ただし
モジュールやクラスを集合とみた場合は、ですが。

また、メソッドに機能を追加したいこともしばしばありますね。関
数を拡大したい場合、あちらこちらからコードをコピーしてくるか、
もしくは alias し、そのあとで機能を追加することがほとんどな
ので。そういった修正が分散してしまうのもよろしくない気がしま
す。

これらの写像や関係まわりの問題は casting とは直行してる側面
もあるかも知れません。

>Ruby で数学のクラスを書くのは楽しいし,まわりくどくなく,
>直感がそのまま表現できると思います.便利です.すぐに実行できるし.

それ自体が罠のように感じることもあったり ^^;;;

-- Gotoken