Advertisement
Guest User

Untitled

a guest
Oct 17th, 2019
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.65 KB | None | 0 0
  1. import language.experimental.macros
  2. import language.implicitConversions
  3. import magnolia._
  4.  
  5. trait MyTypeclass[T] {
  6. def f(t: T): String
  7. }
  8.  
  9. object MyTypeclass {
  10. type Typeclass[T] = MyTypeclass[T]
  11.  
  12. implicit def deriveOption[A](implicit ev: Typeclass[A]): Typeclass[Option[A]] = (t: Option[A]) => ???
  13.  
  14. def combine[T](ctx: CaseClass[Typeclass, T]): Typeclass[T] = (t: T) => ???
  15. def dispatch[T](ctx: SealedTrait[Typeclass, T]): Typeclass[T] = (t: T) => ???
  16.  
  17. implicit def gen[T]: Typeclass[T] = macro Magnolia.gen[T]
  18. }
  19.  
  20. object Test extends App {
  21.  
  22. case class SomeClass(id: Option[Another])
  23. case class Another(b: String)
  24.  
  25. MyTypeclass.gen[List[SomeClass]]
  26. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement