稲葉です.

以下のようなdupとcloneの違いは仕様なのでしょうか?マニュアルにはfreeze
されている場合の違いしか書かれていません.

1.2.3と1.3.1-990310で確認しました.

class Array2 < Array
  def Array2.[](*args)
    Array2.new.replace(super)    # もっといいやり方はないでしょうか?
  end
end

a2 = Array2[1,2]
p a2		# => Array2
p a2.clone	# => Array2
p a2.dup	# => Array

Hashに対して同様のことをすると, すべてHash2になるようなのですが...
--
	稲葉 浩人 <inaba / sdd.tokyo-sc.toshiba.co.jp/inaba / st.rim.or.jp>