dynamic duck typing vs static duck typing

http://d.hatena.ne.jp/wiseler/20080731/p1

Bruceのコードがあんまりなのはわかりますが、論点はそこではないです。Javaで上の二つのものと同じような簡潔なコードは書けるのでしょうか? それとも、不当な例なのでしょうか。

ここに挙げられてたコードは、そりゃ意図通りの動きをしますけどね……
話の流れとして、ダックタイピングだと共通の基底クラス/インタフェースがなくても統一的やりかたでメソッド呼べるから便利だねーって話でしょ。その文脈でいきなりマクロによるstatic duck typingを持ち出す時点で何かおかしいと思わないのか君は。統一的なやり方で「動的に」メソッド呼び出せないことはどうでもいいことなのか?

これに対する、Common LispSchemeScalaPythonなどでの例はいただきました

おいおいC++の静的ダックタイピングもそれ以外の動的ダックタイピングもいっしょくたかよ!C++だけ明らかに浮いてることに気づいて!!
ここで挙げられてる例ではどの言語による実装でも同じようにふるまうけど、でもたとえば配列の長さをユーザ入力で決定したり、要素の種類を乱数で決定しようとしたらどうなるの?
C++ templateによるパターンマッチングやダックタイピングはたしかに強力だけど、動的言語のダックタイピングとは応用範囲がぜんぜん違う*1のよ。いくらなんでもこれらを同一視するのは無茶では。この文脈で静的言語出したいなら、C#のdynamicキーワードあたりどうかなー(Javaのライバルだし)(まだ実装されてないけど)

*1:広い狭いではなく、そもそも適用する部分が異なる