アドレスを求める計算の練習

変数と値のリストから、アドレスを求めるプログラムを作ってみました。
マッチングやらタプルやら末尾再帰やら、やっぱりScala便利です。

object main {

        def main(argv:Array[String]) {
                val tes = List(("a",1),("b",2),("a",3),("d",5),("e",6));
                val rc = test(tes,Map())
                println("test"+ rc)
        }

        def test(a:List[(String,Int)],b:Map[String,Int]):Map[String,Int] =
         a match {
                case List() => b
                case (k,v)::xs =>
                        if(b.contains(k)) {
                                test(xs, b)
                        } else {
                                test(xs, b + (k -> b.size))
                        }
        }

}