diff options
Diffstat (limited to 'examples/src/main/scala/cats.scala')
-rw-r--r-- | examples/src/main/scala/cats.scala | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/examples/src/main/scala/cats.scala b/examples/src/main/scala/cats.scala index 08690c2..8d33a0f 100644 --- a/examples/src/main/scala/cats.scala +++ b/examples/src/main/scala/cats.scala @@ -1,23 +1,22 @@ -package magnolia.examples.cats +package magnolia.examples import scala.collection.immutable.ListMap import scala.language.experimental.macros -import scala.language.higherKinds import cats.Show import magnolia.ContravariantDerivation import magnolia.Macros -object instances extends instances1 { +object catsShowDerivation { - implicit val showDerivation = new ContravariantDerivation[Show] { - type Return = String - def call[T](show: Show[T], value: T): String = show.show(value) - def construct[T](body: T => String): Show[T] = body(_) - def join(xs: ListMap[String, String]): String = xs.map { case (k, v) => s"$k=$v" }.mkString("{", ", ", "}") - } -} - -trait instances1 { + implicit val showDerivation: ContravariantDerivation[Show] = + new ContravariantDerivation[Show] { + type Return = String + def call[T](show: Show[T], value: T): String = show.show(value) + def construct[T](body: T => String): Show[T] = body(_) + def join(xs: ListMap[String, String]): String = + xs.map { case (k, v) => s"$k=$v" }.mkString("{", ", ", "}") + } + implicit def genericShow[T]: Show[T] = macro Macros.magnolia[T, Show[_]] } |