暗黙のエビデンスオブジェクトを参照しなくても、型クラスの関数を直接使用したいと考えています。暗黙のエビデンスオブジェクトなしで直接Scala型のメガネを使用する
今、私は型クラスに推奨される方法(少なくとも私はそう思う)に実装している:私が書きたいのですが
def addTwice[A](x: A, y: A)(implicit ev: Monoid[A]): A = {
ev.append(ev.append(x,y), y)
}
:
object Main {
import Implicits._
import Implicits.monoidInt._
def main(args: Array[String]): Unit = {
println(addTwice(1,2))
}
}
object Implicits {
implicit object monoidInt extends Monoid[Int] {
def zero: Int = 0
def append(x: Int, y: Int): Int = x + y
}
}
trait Monoid[A] {
def zero: A
def append(x: A, y: A): A
}
代わりのようaddTwice
を書くことを
def addTwice[A: Monoid[A]](x: A, y: A): A = x.append(y).append(y)
これは可能ですか?
'A:Monoid'の間は'暗黙的に[Monoid [A]] 'ですか? – cchantep
申し訳ありませんが、私はその質問を理解できません。 – TomTom
「暗黙的に」十分ですか? – cchantep