Abuse of match?
Would you consider the following block of code match abuse and if so what's a more elegant way to do it without a big if-else-if block? def sum(base: Int, xs: List[Int]): Int = { base match { case 0 => 1 case _ if (base < 0) => 0 case _ if (xs.isEmpty) => 0 case _ => xs.sum } } Yes, this an abuse of match. You've basically just written a big if-else-if block, but in a more awkward form. What's wrong with if-statements? I think it's much cleaner to just write this: def countChange(money: Int, coins: List[Int]): Int = { if(money == 0) 1 else if (money < 0) 0 else if (coins.isEmpty) 0 else