2
型の代わりに型lambdaを返す型lambdaをScalaで作成したいとします。Scalaで型lambdaを返す型lambda
def f[A](implicit ev1: Eq[A], ev2: ClassTag[A])
これら2つの暗黙の証拠を1つの証拠変数に結合したいと考えています。私は私が定義されて&
型ラムダはコンパイルされません。しかし
def f[A: Eq & ClassTag]
として、前述の機能f
を書きたいと思い
type &[E1[_], E2[_]] = ({type λ[T] = Ev2[E1, E2, T]})#λ
その後、
trait Ev2[E1[_], E2[_], T] extends Product2[E1[T], E2[T]] {
def canEqual(that: Any) = false
}
object Ev2 {
implicit def ev2[T, E1[_], E2[_]](implicit e1: E1[T], e2: E2[T]) = new Ev2[E1, E2, T] {
def _1 = e1
def _2 = e2
}
}
を試してみました。型ラムダ(kind of * => *
)を返すような型ラムダを書く方法はありますか?
あなたの目標が1行目を簡略化することであれば、なぜdef f [A:Eq: ClassTag] = ??? ' –
@MichaelZajac私は証拠がない関数を統一しようとしています.1つまたは2つの証拠があります。 –