aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorJon Pretty <jon.pretty@propensive.com>2017-06-12 11:55:13 +0200
committerJon Pretty <jon.pretty@propensive.com>2017-06-12 11:55:13 +0200
commitec3f9d345e8a30e4e8c0b5885c718deb6cacb88c (patch)
tree9f92722e14df376b9bb42b6d2118ed80cc6fad52 /examples
parent1ea072197cf8a992b37d7efe0636358a236b9d6d (diff)
downloadmagnolia-ec3f9d345e8a30e4e8c0b5885c718deb6cacb88c.tar.gz
magnolia-ec3f9d345e8a30e4e8c0b5885c718deb6cacb88c.tar.bz2
magnolia-ec3f9d345e8a30e4e8c0b5885c718deb6cacb88c.zip
Fixes for substitution of Lazy values
Diffstat (limited to 'examples')
-rw-r--r--examples/src/main/scala/example.scala32
1 files changed, 30 insertions, 2 deletions
diff --git a/examples/src/main/scala/example.scala b/examples/src/main/scala/example.scala
index c719ad8..5dd1f47 100644
--- a/examples/src/main/scala/example.scala
+++ b/examples/src/main/scala/example.scala
@@ -1,11 +1,13 @@
-package magnolia
+package magnolia.examples
+
+import magnolia._
import language.experimental.macros
import language.higherKinds
-case class Thing(str: String) {
+/*case class Thing(str: String) {
def access(path: String): Thing = Thing(s"$str.$path")
}
@@ -81,3 +83,29 @@ trait Serializer_1 extends Serializer_2 {
trait Serializer_2 {
implicit def generic[T]: Serializer[T] = macro Macros.magnolia[T, Serializer[_]]
}
+*/
+
+object `package` {
+ implicit class Showable[T: Show](t: T) {
+ def show: String = implicitly[Show[T]].show(t)
+ }
+}
+
+sealed trait Tree
+case class Branch(left: Tree, right: Tree) extends Tree
+case class Leaf(value: Int) extends Tree
+
+trait Show[T] { def show(t: T): String }
+object Show extends Show_1 {
+ implicit val showInt: Show[Int] = _.toString
+ implicit val derivation = 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: List[String]): String = xs.mkString("(", ", ", ")")
+ }
+}
+
+trait Show_1 {
+ implicit def generic[T]: Show[T] = macro Macros.magnolia[T, Show[_]]
+}