Scala by Example > 演習7.2.2解答案
Scala by Example > 演習7.2.2の解答案です。
abstract class IntTree case object EmptyTree extends IntTree case class Node(elem: Int, left: IntTree, right: IntTree) extends IntTree def insert(t: IntTree, v: Int): IntTree = t match { case Node(e, l, r) => if (e > v) Node(e, insert(l, v), r) else if (e < v) Node(e, l, insert(r, v)) else t case EmptyTree => Node(v, EmptyTree, EmptyTree) } def contains(t: IntTree, v: Int): Boolean = t match { case Node(e, l, r) => if (e == v) true else if (e > v) contains(l, v) else if (e < v) contains(r, v) else false case EmptyTree => false }
IntSetと比べるとcaseクラスを使う事により大分すっきりしていますね。