Subscribed unsubscribe Subscribe Subscribe

多相的な二分木

Scala

Scala勉強中ということで、多相的な二分木を書いてみた。memberとかdeleteは書いてない。2.8からはTraversableなど新しいtraitがあるようなので、それを使うようにするとよりよくなると思う。

  • Treeを共変にするためには、insertを多相的にして下限境界を指定する必要がある(コップ本p.416)
  • LeafがTree[T]でなくTree[Nothing]なのは、Leafがobjectでパラメータを持たないから多相的にできない?
  • subtypeがあるためか、Haskellと勝手が違って難しい
  • コメントにもあるけど、elemとnewElemの比較で、レシーバとパラメータを入れ替えると型チェックが通らなくなる。newElemをレシーバにする必要があることに気がつくまでとても時間が掛かった。

もう少しでコップ本が読み終わるけど、習得にはまだ特訓が必要そう。