からValue
型クラスに属するように制約された抽象型を使用したいのはcatです。Show
私の最初の試みは次のようなものです:
package examples
import cats._
import cats.data._
import cats.implicits._
class UsingShow1 {
type Value <: Show[Value] // Not sure if this declaration is right
def showValues(vs: List[Value]): String =
vs.map(implicitly[Show[Value]].show(_)).mkString // Error line
}
しかし、コンパイラは暗黙のパラメーターを見つけられませんShow[Value]
。
前の例を次のように定義できることはわかっています。
class UsingShow2[Value: Show] {
def showValues(vs: List[Value]): String =
vs.map(implicitly[Show[Value]].show(_)).mkString
}
ただし、型パラメーターの代わりに抽象型を使用できるかどうかを知りたかったのです。