>>986
> object1.toValue(object2);と渡せるようにしてやったとすると、

それをやるとオブジェクト間の依存度が強まることになる。
いったいobject1はobject2の何を必要としているの?

object1は大した情報を必要としていないのに、
object2を必要としてしまう。

toValueが必要とする値をobject2の型ではなく、インターフェースにしておけば、
必要なのは「そのインターフェース」と明確に最小限に
することもできるが、そんなことをするとインターフェースが多くなりすぎる。

それが例え型がない言語であったとしても、結局はなんの関数を使うのかを
インターフェースの代わりにドキュメントにまとめなきゃいけないので
結局は同じこと。