豊福です。

  しょっぱなから Ruby から遠い話題を出したおわびに
coerce について私が過去書いたことをまとめます。

・左加群のように主体は右側で作用は左側に書くものは
  Ruby に自然には導入できない(Ruby は作用を右に書く
  から)。これを coerce で対処すると不自然になる。
  (Matrix の導入に Scaler が必要なように)
  この問題は「型合わせ」ではなく別の仕掛で対処でき
  ないか。=> 「左からの演算」の提案あり。

・(外見上)演算には依存せずに「型合わせ」しているが
  それは自然か。実際には必要に応じてどこかのクラスで
  演算毎に処理をわけている。
  乗算に対する「型合わせ」とべき乗に対する「型合わせ」
  は質的に違うような気がする。

・現在 coerce の対象は「数と演算」に限るということ
  になっているが、そもそも「数」とは何か。有限体、
  p進体クラスができたら多分それらは「数」なんだろう。
  では環、群では?
  Matrix は「数」なのか。「数」というより「システム」
  という気がする。文字列を要素とする Matrix だって
  (多分)作れるし。
  「演算」とは何か。「演算」と「演算ではないもの」の
  違いは?
  厳密な定義でなくてもよいが指針は欲しい。


ってとこです。
---
                        豊福
                        toyofuku / juice.or.jp