Scalaで既存クラスに対し再帰を利用したメソッドを定義したい
ScalaのSeqクラスに対し、以下のように新しいメソッドを追加しようと考えております。
implicit def convert(xs:Seq[Int]) = new {
def mmap(g: Int => Int): Seq[Int] = {
xs match {
case m if m.isEmpty => Seq()
case xs: Seq[Int] => g(xs.head) +: (xs.tail).mmap(g)
}
}
}
println((1 to 5).mmap((x => x * 2)))
再帰が含まれているのが原因だと思われますが、以下のようなエラーになりました。
recursion.scala:5: error: value mmap is not a member of Seq[Int]
Note: implicit method convert is not applicable here because it comes after the application point and it lacks an explicit result type
case xs: Seq[Int] => g(xs.head) +: (xs.tail).mmap(g)
^
one error found
このエラーを回避し、再帰を利用したメソッドを新規追加する方法をご教示いただけますでしょうか。
どうぞよろしくお願いいたします。