Package

cats

derived

Permalink

package derived

Visibility
  1. Public
  2. All

Type Members

  1. sealed trait IterState[+A] extends AnyRef

    Permalink
  2. trait IterableDerivationFromMkIterable extends AnyRef

    Permalink
  3. trait MkConsK[F[_], G[_]] extends AnyRef

    Permalink
  4. trait MkConsK0 extends MkConsK1

    Permalink
  5. trait MkConsK1 extends MkConsK2

    Permalink
  6. trait MkConsK2 extends AnyRef

    Permalink
  7. trait MkEmpty[A] extends Empty[A]

    Permalink
    Annotations
    @implicitNotFound( ... )
  8. trait MkEmptyK[F[_]] extends EmptyK[F]

    Permalink
  9. trait MkEmptyK0 extends MkEmptyK1

    Permalink
  10. trait MkEmptyK1 extends MkEmptyK2

    Permalink
  11. trait MkEmptyK2 extends MkEmptyK3

    Permalink
  12. trait MkEmptyK3 extends AnyRef

    Permalink
  13. trait MkEmptyKDerivation extends MkEmptyK0

    Permalink
  14. trait MkEq[T] extends Eq[T]

    Permalink
  15. trait MkFoldable[F[_]] extends Foldable[F]

    Permalink
  16. trait MkFoldable0 extends MkFoldable1

    Permalink
  17. trait MkFoldable1 extends MkFoldable2

    Permalink
  18. trait MkFoldable2 extends MkFoldable3

    Permalink
  19. trait MkFoldable3 extends AnyRef

    Permalink
  20. trait MkFoldableDerivation extends MkFoldable0

    Permalink
  21. trait MkFunctor[F[_]] extends Functor[F]

    Permalink
    Annotations
    @implicitNotFound( ... )
  22. trait MkHash[A] extends Hash[A]

    Permalink
  23. trait MkHash0 extends MkHash1

    Permalink
  24. trait MkHash1 extends AnyRef

    Permalink
  25. trait MkIterable[F[_]] extends AnyRef

    Permalink
  26. trait MkIterable0 extends MkIterable1

    Permalink
  27. trait MkIterable1 extends MkIterable2

    Permalink
  28. trait MkIterable2 extends MkIterable3

    Permalink
  29. trait MkIterable3 extends AnyRef

    Permalink
  30. trait MkMonoid[T] extends Monoid[T]

    Permalink
  31. trait MkMonoidK[F[_]] extends MonoidK[F]

    Permalink
  32. trait MkOrder[T] extends Order[T]

    Permalink
  33. trait MkPartialOrder[T] extends PartialOrder[T]

    Permalink
  34. trait MkPure[F[_]] extends Pure[F]

    Permalink
  35. trait MkPure0 extends MkPure1

    Permalink
  36. trait MkPure1 extends MkPure2

    Permalink
  37. trait MkPure2 extends AnyRef

    Permalink
  38. trait MkPureDerivation extends MkPure0

    Permalink
  39. trait MkSemigroup[T] extends Semigroup[T]

    Permalink
  40. trait MkSemigroupK[F[_]] extends SemigroupK[F]

    Permalink
  41. trait MkSemigroupK4 extends AnyRef

    Permalink
  42. trait MkShow[A] extends Show[A]

    Permalink

    Due to a limitation in the way Shapeless' describe is currently implemented, Show can't be derived for ADTs which are _both_ recursive _and_ generic in one or more type parameters.

    Due to a limitation in the way Shapeless' describe is currently implemented, Show can't be derived for ADTs which are _both_ recursive _and_ generic in one or more type parameters.

    See: https://github.com/typelevel/kittens/pull/48#issue-249836267 https://github.com/milessabin/shapeless/issues/750

    See the test suite for more precise examples of what can and cannot be derived.

  43. trait MkShow1 extends MkShow2

    Permalink
  44. trait MkShow2 extends MkShow3

    Permalink
  45. trait MkShow3 extends AnyRef

    Permalink
  46. trait MkShowDerivation extends MkShow1

    Permalink
  47. trait MkShowPretty[A] extends ShowPretty[A]

    Permalink
  48. trait MkShowPretty1 extends MkShowPretty2

    Permalink
  49. trait MkShowPretty2 extends MkShowPretty3

    Permalink
  50. trait MkShowPretty3 extends AnyRef

    Permalink
  51. trait MkShowPrettyDerivation extends MkShowPretty1

    Permalink
  52. trait MkTraverse[F[_]] extends Traverse[F]

    Permalink

    Based on the MkFoldable implementation.

    Based on the MkFoldable implementation.

    Annotations
    @implicitNotFound( ... )
  53. trait MkTraverseDerivation extends MkTraverse0

    Permalink
  54. trait ShowPretty[A] extends Show[A]

    Permalink
  55. trait Trivial1[F[_]] extends AnyRef

    Permalink

Value Members

  1. object HashBuilder

    Permalink
  2. object IterState

    Permalink
  3. object MkConsK extends MkConsK0

    Permalink
  4. object MkEmpty extends MkEmptyDerivation with Serializable

    Permalink
  5. object MkEmptyK extends MkEmptyKDerivation with Serializable

    Permalink
  6. object MkEq extends MkEqDerivation with Serializable

    Permalink
  7. object MkFoldable extends MkFoldableDerivation with Serializable

    Permalink
  8. object MkFunctor extends MkFunctorDerivation with Serializable

    Permalink
  9. object MkHash extends MkHash0 with Serializable

    Permalink
  10. object MkIterable extends MkIterable0

    Permalink
  11. object MkMonoid extends MkMonoidDerivation with Serializable

    Permalink
  12. object MkMonoidK extends MkMonoidK0 with Serializable

    Permalink
  13. object MkOrder extends MkOrderDerivation with Serializable

    Permalink
  14. object MkPartialOrder extends MkPartialOrderDerivation with Serializable

    Permalink
  15. object MkPure extends MkPureDerivation with Serializable

    Permalink
  16. object MkSemigroup extends MkSemigroupDerivation with Serializable

    Permalink
  17. object MkSemigroupK extends MkSemigroupK0 with Serializable

    Permalink
  18. object MkShow extends MkShowDerivation with Serializable

    Permalink
  19. object MkShowPretty extends MkShowPrettyDerivation with Serializable

    Permalink
  20. object MkTraverse extends MkTraverseDerivation with Serializable

    Permalink
  21. object ShowPretty extends Serializable

    Permalink
  22. object Trivial1

    Permalink
  23. object auto

    Permalink

    Fully automatically derive the instance, note that this derivation is not cached, so it will re-derive every time an instance is needed in the application, which could significantly impact the compilation time.

  24. object cached

    Permalink

    cached cache the derived instance but this cache are global, so be cautious only use it when there is only one instance globally in your application.

  25. object consk

    Permalink
  26. object semi

    Permalink

    allows semi automatically derive each instance.

    allows semi automatically derive each instance. The derivation might need help when there are fields with type constructor that comes with instances e.g.

    scala> case class Foo(bars: List[Bar])
    scala> case class Bar(a: String)
    
    scala> cats.derived.semi.show[Foo].show(Foo(List(Bar("a"))))
    res1: String = Foo(bars = $colon$colon(head = Bar(a = a), tl$access$1 = Nil.type()))

    Note that semi.show didn't respect the native Show[List] instance

    You could either derive a Bar instance first

    scala> implicit val barShow = cats.derived.semi.show[Bar]
    
    scala> cats.derived.semi.show[Foo].show(Foo(List(Bar("a"))))
    res2: String = Foo(bars = List(Bar(a = a)))

    Or you can take advantage of a controlled auto derivation

     scala> implicit val fooShow: Show[Foo] = { |
               import cats.derived.auto.show._  |
               cats.derived.semi.show           |
            }
    scala> Foo(List(Bar("a"))).show
    res3: String = Foo(bars = List(Bar(a = a)))

Ungrouped