>>730
「要所」については了解。
折れは多相型や動的型付は欠陥ではなく、逆に武器になるということだけ言いたかった。

型を決定できるかどうかについては、例えば、こんな場合はどう思う?
1. parametric polymorphism
 id x = x
 ここで、「=」の右側に出てくる「x」の型は?

2. inclusion polymorphism
 Shape something() {
  if (rand() > 0.5)
  return Point(0, 0)
  else
  return Rectangle(0, 0, 0, 0)
 }
 さあ、この関数sample()の返値の型は?答えはShape。
 では、この関数から返されるオブジェクトの型は?
 また、以下の場合、
 Shape something() {
  Shape s;
  if (rand() > 0.5)
  s = Point(0, 0)
  else
  s = Rectangle(0, 0, 0, 0)
  return s;
 }
 変数sが指すオブジェクトの型は?

3. ad-hoc polymorphism
 加算演算子「+」に文字列演算子「+」がオーバーロードされているとして、
 a ++ b
 の型は?
 aやbがinclusion polymorphismの2番目の例に出たような形で決定されていたら?