sealed trait IntList case object IntNil extends IntList case class IntCase(head: Int, tail: IntList) extends IntList def sum(list: IntList): Int = list match { case IntNil => 0 case IntCons(head, tail) => head + sum(tail) } def product(list: IntList): Int = list match { case IntNil => 1 case IntCons(head, tail) => head * product0(tail) } sealed trait IntList case object IntNil extends IntList case
![rpscala162](https://cdn-ak-scissors.b.st-hatena.com/image/square/0ab521c19c7c643ac28ab7fca14626921334cc2a/height=288;version=1;width=512/https%3A%2F%2Fmedia.slid.es%2Fthumbnails%2Fsecure%2F208e53%2Fdecks.jpg)