trait
Derive[F[_], Typeclass[_]] extends AnyRef
Abstract Value Members
-
abstract
def
derive[A](implicit arg0: Typeclass[A]): Typeclass[F[A]]
Concrete Value Members
-
final
def
!=(arg0: Any): Boolean
-
final
def
##(): Int
-
final
def
==(arg0: Any): Boolean
-
final
def
asInstanceOf[T0]: T0
-
def
clone(): AnyRef
-
-
-
def
finalize(): Unit
-
final
def
getClass(): Class[_]
-
def
hashCode(): Int
-
final
def
isInstanceOf[T0]: Boolean
-
-
final
def
notify(): Unit
-
final
def
notifyAll(): Unit
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
-
def
toString(): String
-
final
def
wait(): Unit
-
final
def
wait(arg0: Long, arg1: Int): Unit
-
final
def
wait(arg0: Long): Unit
Derive[F, Typeclass]
represents a universally quantified function fromTypeclass[A]
toTypeclass[F[A]]
for someF[_]
. You can think ofDerive
as a "recipe" for building aTypeclass[F[A]]
instance given aTypeclass[A]
.For example, if we know how to compare values of type
A
for equality then we can compare lists with elements of typeA
for equality by checking that the length of the lists is the same and each pair of corresponding elements are equal. And we can do this for any typeA
as long as it has anEqual
instance.This is used by the library to derive typeclass instances for higher kinded types given typeclass instances for the type they are parameterized on.