Package

shapeless

Permalink

package shapeless

Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. shapeless
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Type Members

  1. sealed trait :+:[+H, +T <: Coproduct] extends Coproduct

    Permalink

    Like Either, the :+: type defines a new type that can contain either H or T.

  2. final case class ::[+H, +T <: HList](head: H, tail: T) extends HList with Product with Serializable

    Permalink

    Non-empty HList element type.

  3. trait <:!<[A, B] extends Serializable

    Permalink
    Annotations
    @implicitNotFound( ... )
  4. trait =:!=[A, B] extends Serializable

    Permalink
  5. trait AdditiveCollection[Repr] extends Serializable

    Permalink

    Evidence that Repr instances can be nested in a Sized.

    Evidence that Repr instances can be nested in a Sized.

    Should assert that a Builder[_, Repr] given n elements will result in a Repr of length n.

  6. trait Annotation[A, T] extends Serializable

    Permalink

    Evidence that type T has annotation A, and provides an instance of the annotation.

    Evidence that type T has annotation A, and provides an instance of the annotation.

    If type T has an annotation of type A, then an implicit Annotation[A, T] can be found, and its apply method provides an instance of the annotation.

    Example:

    case class First(i: Int)
    
    @First(3) trait Something
    
    
    val somethingFirst = Annotation[First, Something].apply()
    assert(somethingFirst == First(3))
  7. class AnnotationMacros extends CaseClassMacros

    Permalink
  8. trait Annotations[A, T] extends DepFn0 with Serializable

    Permalink

    Provides the annotations of type A of the fields or constructors of case class-like or sum type T.

    Provides the annotations of type A of the fields or constructors of case class-like or sum type T.

    If type T is case class-like, this type class inspects its fields and provides their annotations of type A. If type T is a sum type, its constructor types are looked for annotations.

    Type Out is an HList having the same number of elements as T (number of fields of T if T is case class-like, or number of constructors of T if it is a sum type). It is made of None.type (no annotation on corresponding field or constructor) and Some[A] (corresponding field or constructor is annotated).

    Method apply provides an HList of type Out made of None (corresponding field or constructor not annotated) or Some(annotation) (corresponding field or constructor has annotation annotation).

    Note that annotation types must be case class-like for this type class to take them into account.

    Example:

    case class First(s: String)
    
    case class CC(i: Int, @First("a") s: String)
    
    sealed trait Base
    @First("b") case class BaseI(i: Int) extends Base
    case class BaseS(s: String) extends Base
    
    
    val ccFirsts = Annotations[First, CC]
    val baseFirsts = Annotations[First, Base]
    
    // ccFirsts.Out is  None.type :: Some[First] :: HNil
    // ccFirsts.apply() is
    //   None :: Some(First("a")) :: HNil
    
    // baseFirsts.Out is  Some[First] :: None.type :: HNil
    // baseFirsts.apply() is
    //   Some(First("b")) :: None :: HNil
  9. class ApplyEverything[F <: Poly] extends AnyRef

    Permalink
  10. trait ApplyUnapplyFacet extends ProductISOFacet

    Permalink
  11. trait BasisConstraint[L <: HList, M <: HList] extends Serializable

    Permalink

    Type class witnessing that every element of L is an element of M.

  12. sealed trait CNil extends Coproduct

    Permalink

    The CNil type is used to terminate a 'list' of :+: alternatives.

    The CNil type is used to terminate a 'list' of :+: alternatives.

    Like the Nil constructor of List, it does not convey real information. This is achieved by not having any value for CNil.

    This makes the type Int :+: CNil equivalent to Int, because the right (Inr) alternative of :+: can not be constructed properly.

  13. final case class Cached[+T](value: T) extends AnyVal with Product with Serializable

    Permalink

    Wraps a cached implicit T.

    Wraps a cached implicit T.

    Looking for an implicit Cached[T] first triggers a look for an implicit T, caches the resulting tree, and returns it immediately and in subsequent look ups for an implicit Cached[T]. Thus, subsequent look ups do not trigger looking for an implicit T, only returning the instance kept in cache.

    Beware that if the contexts in which two subsequent look ups are different, so that looking for a T in each of them doesn't return the same result, this change would be ignored by caching. Looking for a Cached[T] in the first context would put the implicit T of this context in cache, and then looking for a Cached[T] in the second context would return the former instance from the first context. E.g.

    trait TC[T] {
      def msg: String
    }
    
    object First {
      implicit val tc: TC[Int] = new TC[Int] {
        val msg = "first"
      }
    
      def print() = println(implicitly[TC[Int]].msg)
      def printCached() = println(cached[TC[Int]].msg)
    }
    
    object Second {
      implicit val tc: TC[Int] = new TC[Int] {
        val msg = "second"
      }
    
      def print() = println(implicitly[TC[Int]].msg)
      def printCached() = println(cached[TC[Int]].msg)
    }
    
    First.print()
    Second.print()
    First.printCached()
    Second.printCached()

    would print "first" then "second" (non cached TC[Int] instances), then "first" twice (first instance, returned the second time too through the cache).

  14. class CachedImplicitMacros extends AnyRef

    Permalink
  15. class CachedMacros extends LazyMacros with OpenImplicitMacros

    Permalink
  16. trait CaseClassFacet extends AnyRef

    Permalink
  17. trait CaseClassMacros extends ReprTypes

    Permalink
  18. trait CaseInst extends AnyRef

    Permalink
  19. trait Cases extends AnyRef

    Permalink
  20. type Const[C] = AnyRef { type λ[T] = C }

    Permalink
  21. sealed trait Coproduct extends Product with Serializable

    Permalink

    Encodes a coproduct type, such as a sealed family of case classes.

    Encodes a coproduct type, such as a sealed family of case classes.

    Each constructor from the family gets an encoding in terms of nested Inr and Inl.

    Which constructor is encoded as Inl() and which as Inr(Inl()) is determined by lexical order of the subclasses. This example illustrates the encoding:

    scala> sealed trait Animal
    defined trait Animal
    
    scala> case class Cat(name: String, livesLeft: Int) extends Animal
    defined class Cat
    
    scala> case class Dog(name: String, bonesBuried: Int) extends Animal
    defined class Dog
    
    scala> case class Koala(name: String, leavesEaten: Int) extends Animal
    defined class Koala
    
    scala> case class Sloth(name: String, daysToClimbDownFromCurrentTree: Int) extends Animal
    defined class Sloth
    
    scala> val garfield = Cat("Garfield", 9)
    garfield: Cat = Cat(Garfield,9)
    
    scala> val odie = Dog("Odie", 3)
    odie: Dog = Dog(Odie,3)
    
    scala> val koala = Koala("foo", 10)
    koala: Koala = Koala(foo,10)
    
    scala> val sloth = Sloth("bar", 2)
    sloth: Sloth = Sloth(bar,2)
    
    scala> val genAnimal = Generic[Animal]
    genAnimal: shapeless.Generic[Animal]{type Repr = Cat :+: Dog :+: Koala :+: Sloth} = ...
    
    scala> def showCoproduct(o: Any) : String = o match {
         | case Inl(a) => "Inl(" + showCoproduct(a) + ")"
         | case Inr(a) => "Inr(" + showCoproduct(a) + ")"
         | case a => a.toString
         | }
    showCoproduct: (o: Any)String
    
    scala> showCoproduct(genAnimal.to(garfield))
    res5: String = Inl(Cat(Garfield,9))
    
    scala> showCoproduct(genAnimal.to(odie))
    res6: String = Inr(Inl(Dog(Odie,3)))
    
    scala> showCoproduct(genAnimal.to(koala))
    res7: String = Inr(Inr(Inl(Koala(foo,10))))
    
    scala> showCoproduct(genAnimal.to(sloth))
    res8: String = Inr(Inr(Inr(Inl(Sloth(bar,2)))))
    
    scala>
  22. trait CopyFacet extends CaseClassFacet

    Permalink
  23. trait Coselect[T] extends AnyRef

    Permalink
  24. trait Data[F, T, R] extends Serializable

    Permalink

    Type class representing one-level generic queries.

  25. trait Data0 extends AnyRef

    Permalink
  26. trait Data1 extends Data0

    Permalink
  27. trait DataT[F, T] extends Serializable

    Permalink

    Type class representing one-level generic transformations.

  28. trait DataT0 extends AnyRef

    Permalink
  29. trait DataT1 extends DataT0

    Permalink
  30. trait Default[T] extends DepFn0 with Serializable

    Permalink

    Provides default values of case class-like types.

    Provides default values of case class-like types.

    The Out type parameter is an HList type whose length is the number of fields of T. Its elements correspond to the fields of T, in their original order. It is made of None.type (no default value for this field) and Some[...] (default value available for this field, with ... the type of the field). Note that None.type and Some[...] are more precise than simply Option[...], so that the availability of default values can be used in type level calculations.

    The apply method returns an HList of type Out, with None elements corresponding to no default value available, and Some(defaultValue) to default value available for the corresponding fields.

    Use like

    case class CC(i: Int, s: String = "b")
    
    val default = Default[CC]
    
    // default.Out is  None.type :: Some[String] :: HNil
    
    // default() returns
    //   None :: Some("b") :: HNil,
    // typed as default.Out
  31. trait DefaultCaseClassDefns extends ApplyUnapplyFacet with ProductFacet with PolymorphicEqualityFacet with CopyFacet with ToStringFacet

    Permalink
  32. class DefaultMacros extends CaseClassMacros

    Permalink
  33. trait DefaultSymbolicLabelling[T] extends DepFn0 with Serializable

    Permalink
  34. trait DepFn0 extends AnyRef

    Permalink

    Dependent nullary function type.

  35. trait DepFn1[T] extends AnyRef

    Permalink

    Dependent unary function type.

  36. trait DepFn2[T, U] extends AnyRef

    Permalink

    Dependent binary function type.

  37. type Everything[F <: Poly, K <: Poly, T] = Case[EverythingAux[F, K], ::[T, HNil]]

    Permalink

    The SYB everything combinator

  38. class EverythingAux[F, K] extends Poly

    Permalink
  39. type Everywhere[F <: Poly, T] = Case[EverywhereAux[F], ::[T, HNil]]

    Permalink

    The SYB everywhere combinator

  40. class EverywhereAux[F] extends Poly

    Permalink
  41. trait FieldOf[V] extends AnyRef

    Permalink

    Field with values of type V.

    Field with values of type V.

    Record keys of this form should be objects which extend this trait. Keys may also be arbitrary singleton typed values, however keys of this form enforce the type of their values.

  42. trait FieldPoly extends Poly1

    Permalink

    Polymorphic function that allows modifications on record fields while preserving the original key types.

  43. trait Fin[N <: Succ[_]] extends AnyRef

    Permalink

    Base trait for type level finite numbers, i.e.

    Base trait for type level finite numbers, i.e. numbers less than some bound N

  44. case class FinSucc[N <: Succ[_], P <: Fin[N]]() extends Fin[Succ[N]] with Product with Serializable

    Permalink

    Encoding of successor.

  45. case class FinZero[N <: Succ[_]]() extends Fin[N] with Product with Serializable

    Permalink

    Encoding of zero.

  46. trait FromProductArgs extends Dynamic

    Permalink

    Trait supporting mapping HList arguments to argument lists, inverse of ProductArgs.

    Trait supporting mapping HList arguments to argument lists, inverse of ProductArgs.

    Mixing in this trait enables method applications of the form,

    lhs.methodProduct(23 :: "foo" :: true)

    to be rewritten as,

    lhs.method(23, "foo", true)

    ie. the HList argument is used to obtain arguments for a target method (the called method named minus the "Product" suffix) in sequence and the application is rewritten to an application of the target method

  47. trait FromRecordArgs extends Dynamic

    Permalink

    Trait supporting mapping record arguments to named argument lists, inverse of RecordArgs.

    Trait supporting mapping record arguments to named argument lists, inverse of RecordArgs.

    Mixing in this trait enables method applications of the form,

    lhs.methodRecord('x ->> 23 :: 'y ->> "foo" :: 'z ->> true :: HNil)

    to be rewritten as,

    lhs.method(x = 23, y = "foo", z = true)

    ie. the record argument is used to look up arguments for a target method (the called method named minus the "Record" suffix) by name and type and the application is rewritten to an application of the target method

  48. trait Generic[T] extends Serializable

    Permalink

    Represents the ability to convert from a concrete type (e.g.

    Represents the ability to convert from a concrete type (e.g. a case class) to a generic (HList / Coproduct} based) representation of the type.

    For example:

    scala> sealed trait Animal
    
    defined trait Animal
    scala> case class Cat(name: String, livesLeft: Int) extends Animal
    defined class Cat
    
    scala> case class Dog(name: String, bonesHidden: Int) extends Animal
    defined class Dog
    
    scala> val genCat = Generic[Cat]
    genCat: shapeless.Generic[Cat]{ type Repr = String :: Int :: HNil } = ...
    
    scala> val genDog = Generic[Dog]
    genDog: shapeless.Generic[Dog]{ type Repr = String :: Int :: HNil } = ...
    
    scala> val garfield = Cat("Garfield", 9)
    garfield: Cat = Cat(Garfield,9)
    
    scala> val genGarfield = genCat.to(garfield)
    genGarfield: genCat.Repr = Garfield :: 9 :: HNil
    
    scala> val reconstructed = genCat.from(genGarfield)
    reconstructed: Cat = Cat(Garfield,9)
    
    scala> reconstructed == garfield
    res0: Boolean = true

    Note that constituents of Cat and Dog are exactly the same - a String and an Int. So we could do:

    scala> val odieAsCat = genCat.from(genDog.to(odie))
    odieAsCat: Cat = Cat(odie,3)

    This is quite useful in certain cases, such as copying from one object type to another, as in schema evolution.

    Note that the generic representation depends on the type at which we instantiate Generic. In the example above we instantiated it at Cat and at Dog, and so the generic representation gave the minimal constituents of each of those.

    However, if we instantiate Generic[Animal] instead the generic representation would encode the Cat-ness or Dog-ness of the instance as well (see Coproduct for details of the encoding):

    scala> genDog.to(odie)
    res9: genDog.Repr = odie :: 3 :: HNil
    
    scala> val genAnimal = Generic[Animal]
    genAnimal: shapeless.Generic[Animal]{ type Repr = Cat :+: Dog :+: CNil } = ...
    
    scala> genAnimal.to(odie)
    res8: genAnimal.Repr = Dog(odie,3)
    
    scala> genAnimal.to(odie) match { case Inr(Inl(dog)) => dog; case _ => null }
    res9: Dog = Dog(odie,3)

    Inr and Inl are shapeless.Coproduct constructors. Shapeless constructs each class representation as a sort of "nested Either" using Coproduct. So in our example, genAnimal would essentially encode garfield as Inl(garfield) and odie as Inr(Inl(odie)). Please see shapeless.Coproduct for more details. }}}

    T

    An immutable data type that has a canonical way of constructing and deconstructing instances (e.g. via apply / unapply). Sealed families of case classes work best.

  49. trait Generic1[F[_], FR[_[_]]] extends Serializable

    Permalink
  50. trait Generic10 extends AnyRef

    Permalink
  51. class Generic1Macros extends CaseClassMacros

    Permalink
  52. class GenericMacros extends CaseClassMacros

    Permalink
  53. sealed trait HList extends Product with Serializable

    Permalink

    HList ADT base trait.

  54. class HMap[R[_, _]] extends Poly1

    Permalink

    Heterogenous map with type-level key/value associations that are fixed by an arbitrary relation R.

    Heterogenous map with type-level key/value associations that are fixed by an arbitrary relation R.

    HMaps extend Poly and hence are also polymorphic function values with type-specific cases corresponding to the map's type-level key/value associations.

  55. class HMapBuilder[R[_, _]] extends AnyRef

    Permalink
  56. sealed trait HNil extends HList

    Permalink

    Empty HList element type.

  57. class HasCoproductGeneric[T] extends Serializable

    Permalink
  58. class HasProductGeneric[T] extends Serializable

    Permalink
  59. type Id[+T] = T

    Permalink
  60. trait InferProduct[C <: Coproduct, K] extends Serializable

    Permalink
  61. final case class Inl[+H, +T <: Coproduct](head: H) extends :+:[H, T] with Product with Serializable

    Permalink

    H :+: T can either be H or T.

    H :+: T can either be H or T. In this case it is H.

  62. final case class Inr[+H, +T <: Coproduct](tail: T) extends :+:[H, T] with Product with Serializable

    Permalink

    H :+: T can either be H or T.

    H :+: T can either be H or T. In this case it is T.

  63. trait IsCCons1[L[_], FH[_[_]], FT[_[_]]] extends Serializable

    Permalink
  64. trait IsCCons10 extends AnyRef

    Permalink
  65. class IsCCons1Macros extends IsCons1Macros

    Permalink
  66. trait IsCons1Macros extends CaseClassMacros

    Permalink
  67. trait IsDistinctConstraint[L <: HList] extends Serializable

    Permalink

    Type class witnessing that all elements of L have distinct types

    Type class witnessing that all elements of L have distinct types

    Annotations
    @implicitNotFound( ... )
  68. trait IsHCons1[L[_], FH[_[_]], FT[_[_]]] extends Serializable

    Permalink
  69. trait IsHCons10 extends AnyRef

    Permalink
  70. class IsHCons1Macros extends IsCons1Macros

    Permalink
  71. class IsTuple[T] extends Serializable

    Permalink
  72. trait KeyConstraint[L <: HList, M <: HList] extends Serializable

    Permalink

    Type class witnessing that every element of L is of the form FieldType[K, V] where K is an element of M.

  73. trait LPLens[S, A] extends Dynamic with Serializable

    Permalink
  74. trait LPPath[T <: HList] extends Dynamic

    Permalink
  75. trait LPPrism[S, A] extends Dynamic with Serializable

    Permalink
  76. trait LUBConstraint[L <: HList, B] extends Serializable

    Permalink

    Type class witnessing that every element of L is a subtype of B.

  77. trait LabelledGeneric[T] extends Serializable

    Permalink

    LabelledGeneric is similar to Generic, but includes information about field names or class names in addition to the raw structure.

    LabelledGeneric is similar to Generic, but includes information about field names or class names in addition to the raw structure.

    Continuing the example from shapeless.Generic, we use LabelledGeneric to convert an object to an shapeless.HList:

    scala> val lgenDog = LabelledGeneric[Dog]
    lgenDog: shapeless.LabelledGeneric[Dog]{ type Repr = Record.`'name -> String, 'bonesHidden -> Int`.T } = ...
    
    scala> lgenDog.to(odie)
    res15: lgenDog.Repr = odie :: 3 :: HNil

    Note that the representation does not include the labels! The labels are actually encoded in the generic type representation using shapeless.Witness types.

    As with shapeless.Generic, the representation for Animal captures the subclass embedding rather than the fields in the class, using shapeless.Coproduct:

    scala> val lgenAnimal = LabelledGeneric[Animal]
    lgenAnimal: shapeless.LabelledGeneric[Animal]{ type Repr = Union.`'Cat -> Cat, 'Dog -> Dog`.T } = ...
    
    scala> lgenAnimal.to(odie)
    res16: lgenAnimal.Repr = Dog(odie,3)
    
    scala> genAnimal.to(odie) match { case Inr(Inl(dog)) => dog ; case _ => ???}
    res19: Dog = Dog(odie,3)
    T

    the type which this instance can convert to and from a labelled generic representation

  78. class LabelledMacros extends SingletonTypeUtils with CaseClassMacros

    Permalink
  79. trait LabelledProductTypeClass[C[_]] extends Serializable

    Permalink

    A type class abstracting over the product operation of type classes over types of kind *, as well as deriving instances using an isomorphism.

    A type class abstracting over the product operation of type classes over types of kind *, as well as deriving instances using an isomorphism. Refines ProductTypeClass with the addition of runtime String labels corresponding to the names of the product elements.

  80. trait LabelledProductTypeClassCompanion[C[_]] extends Serializable

    Permalink
  81. trait LabelledTypeClass[C[_]] extends LabelledProductTypeClass[C]

    Permalink

    A type class additionally abstracting over the coproduct operation of type classes over types of kind *.

    A type class additionally abstracting over the coproduct operation of type classes over types of kind *.

    Name hints can be safely ignored.

  82. trait LabelledTypeClassCompanion[C[_]] extends LabelledProductTypeClassCompanion[C]

    Permalink
  83. trait Lazy[+T] extends Serializable

    Permalink

    Wraps a lazily computed value.

    Wraps a lazily computed value. Also circumvents cycles during implicit search, or wrong implicit divergences as illustrated below, and holds the corresponding implicit value lazily.

    The following implicit search sometimes fails to compile, because of a wrongly reported implicit divergence,

    case class ListCC(list: List[CC])
    case class CC(i: Int, s: String)
    
    trait TC[T]
    
    object TC {
      implicit def intTC: TC[Int] = ???
      implicit def stringTC: TC[String] = ???
      implicit def listTC[T](implicit underlying: TC[T]): TC[List[T]] = ???
    
      implicit def genericTC[F, G](implicit
        gen: Generic.Aux[F, G],
        underlying: TC[G]
      ): TC[F] = ???
    
      implicit def hnilTC: TC[HNil] = ???
    
      implicit def hconsTC[H, T <: HList](implicit
        headTC: TC[H],
        tailTC: TC[T]
      ): TC[H :: T] = ???
    }
    
    implicitly[TC[ListCC]] // fails with: diverging implicit expansion for type TC[ListCC]

    This wrongly reported implicit divergence can be circumvented by wrapping some of the implicit values in Lazy,

    case class ListCC(list: List[CC])
    case class CC(i: Int, s: String)
    
    trait TC[T]
    
    object TC {
      implicit def intTC: TC[Int] = ???
      implicit def stringTC: TC[String] = ???
      implicit def listTC[T](implicit underlying: TC[T]): TC[List[T]] = ???
    
      implicit def genericTC[F, G](implicit
        gen: Generic.Aux[F, G],
        underlying: Lazy[TC[G]] // wrapped in Lazy
      ): TC[F] = ???
    
      implicit def hnilTC: TC[HNil] = ???
    
      implicit def hconsTC[H, T <: HList](implicit
        headTC: Lazy[TC[H]], // wrapped in Lazy
        tailTC: TC[T]
      ): TC[H :: T] = ???
    }
    
    implicitly[TC[ListCC]]

    When looking for an implicit Lazy[TC[T]], the Lazy.mkLazy macro will itself trigger the implicit search for a TC[T]. If this search itself triggers searches for types wrapped in Lazy, these will be done only once, their result put in a lazy val, and a reference to this lazy val will be returned as the corresponding value. It will then wrap all the resulting values together, and return a reference to the first one.

    E.g. with the above example definitions, when looking up for an implicit TC[ListCC], the returned tree roughly looks like

    TC.genericTC(
      Generic[ListCC], // actually, the tree returned by Generic.materialize, not written here for the sake of brevity
      Lazy {
        lazy val impl1: TC[List[CC] :: HNil] = TC.hconsTC(
          Lazy(impl2),
          TC.hnilTC
        )
        lazy val impl2: TC[List[CC]] = TC.listTC(TC.genericTC(
          Generic[CC], // actually, the tree returned by Generic.materialize
          Lazy(impl1)  // cycles to the initial TC[List[CC] :: HNil]
        ))
    
        impl1
      }
    )
    Annotations
    @implicitNotFound( ... )
  84. class LazyMacros extends CaseClassMacros with OpenImplicitMacros with LowPriorityTypes

    Permalink
  85. trait LazyMacrosCompat extends AnyRef

    Permalink
  86. class LazyMacrosRef extends AnyRef

    Permalink
  87. trait Lens[S, A] extends LPLens[S, A]

    Permalink
  88. sealed trait LowPriority extends Serializable

    Permalink

    Evidence that no implicit instance of the same type as the one being currently searched is available elsewhere.

    Evidence that no implicit instance of the same type as the one being currently searched is available elsewhere.

    Added to an implicit def like

    implicit def genericThing[F, G]
     (implicit
       ev: LowPriority,
       gen: Generic.Aux[F, G],
       underlying: Thing[G]
     ): Thing[F] = ???

    it prevents genericThing to provide an instance of Thing[F] if an implicit one is already available elsewhere. This effectively gives genericThing a lower priority than the already existing implicits - without having to deal with cumbersome priority scoping.

  89. class LowPriorityMacros extends OpenImplicitMacros with LowPriorityTypes

    Permalink
  90. trait LowPriorityMkPathOptic extends AnyRef

    Permalink
  91. trait LowPriorityMkSelectDynamicOptic extends AnyRef

    Permalink
  92. trait LowPrioritySegment extends AnyRef

    Permalink
  93. trait LowPrioritySized extends AnyRef

    Permalink
  94. trait LowPriorityTypeable extends AnyRef

    Permalink
  95. trait LowPriorityTypes extends AnyRef

    Permalink
  96. trait LowPriorityUnaryTCConstraint extends LowPriorityUnaryTCConstraint0

    Permalink
  97. trait LowPriorityUnaryTCConstraint0 extends AnyRef

    Permalink
  98. trait LowPriorityUnwrappedInstances extends AnyRef

    Permalink
  99. trait LowPriorityWitnessWith extends AnyRef

    Permalink
  100. trait Lub[-A, -B, Out] extends Serializable

    Permalink

    Type class witnessing the least upper bound of a pair of types and providing conversions from each to their common supertype.

  101. trait MkCoproductSelectPrism[C <: Coproduct, T] extends Serializable

    Permalink
  102. trait MkCtorPrism[A, B] extends Serializable

    Permalink
  103. trait MkFieldLens[A, K] extends Serializable

    Permalink
  104. trait MkGenericLens[T] extends Serializable

    Permalink
  105. trait MkHListNthLens[L <: HList, N <: Nat] extends Serializable

    Permalink
  106. trait MkHListSelectLens[L <: HList, U] extends Serializable

    Permalink
  107. trait MkLabelledGenericLens[T] extends Serializable

    Permalink
  108. trait MkNthFieldLens[A, N <: Nat] extends Serializable

    Permalink
  109. trait MkPathOptic[S, P <: HList] extends Serializable

    Permalink
  110. trait MkRecordSelectLens[R <: HList, K] extends Serializable

    Permalink
  111. trait MkSelectDynamicOptic[R, A, K, B] extends Serializable

    Permalink
  112. trait Nat extends AnyRef

    Permalink

    Base trait for type level natural numbers.

  113. trait NatMacroDefns extends AnyRef

    Permalink
  114. class NatMacros extends NatMacroDefns

    Permalink
  115. trait NatProductArgs extends Dynamic

    Permalink

    Trait supporting mapping dynamic argument lists of Ints to HList of Nat arguments.

    Trait supporting mapping dynamic argument lists of Ints to HList of Nat arguments.

    Mixing in this trait enables method applications of the form,

    lhs.method(1, 2, 3)

    to be rewritten as,

    lhs.methodProduct(_1 :: _2 :: _3)

    ie. the arguments are rewritten as HList elements of Nat and the application is rewritten to an application of an implementing method (identified by the "Product" suffix) which accepts a single HList of Int argument.

  116. trait NatTRel0 extends AnyRef

    Permalink
  117. trait NatWith[TC[_ <: Nat]] extends AnyRef

    Permalink
  118. trait Nats extends AnyRef

    Permalink
  119. trait NotContainsConstraint[L <: HList, U] extends Serializable

    Permalink

    Type class witnessing that L doesn't contain elements of type U

    Type class witnessing that L doesn't contain elements of type U

    Annotations
    @implicitNotFound( ... )
  120. trait OpenImplicitMacros extends AnyRef

    Permalink
  121. trait OpticComposer[L, R] extends Serializable

    Permalink
  122. sealed trait OrElse[+A, +B] extends AnyRef

    Permalink

    Like Option.orElse on the type level and like Either on the value level.

    Like Option.orElse on the type level and like Either on the value level.

    Instead of left and right constructors OrElse has primary and secondary implicits that lazily try to resolve first a value of type A or otherwise a value of type B.

  123. case class Orphan[F[_], D, T](instance: F[T]) extends Product with Serializable

    Permalink
  124. trait OrphanDeriver[F[_], D] extends AnyRef

    Permalink
  125. class OrphanMacros extends CaseClassMacros

    Permalink
  126. trait Path[T <: HList] extends LPPath[T]

    Permalink
  127. trait Poly extends PolyApply with Serializable

    Permalink

    Base trait for polymorphic values.

  128. trait Poly0 extends Poly

    Permalink

    Trait simplifying the creation of polymorphic values.

  129. trait Poly1 extends Poly

    Permalink
  130. trait Poly10 extends Poly

    Permalink
  131. trait Poly11 extends Poly

    Permalink
  132. trait Poly12 extends Poly

    Permalink
  133. trait Poly13 extends Poly

    Permalink
  134. trait Poly14 extends Poly

    Permalink
  135. trait Poly15 extends Poly

    Permalink
  136. trait Poly16 extends Poly

    Permalink
  137. trait Poly17 extends Poly

    Permalink
  138. trait Poly18 extends Poly

    Permalink
  139. trait Poly19 extends Poly

    Permalink
  140. trait Poly2 extends Poly

    Permalink
  141. trait Poly20 extends Poly

    Permalink
  142. trait Poly21 extends Poly

    Permalink
  143. trait Poly22 extends Poly

    Permalink
  144. trait Poly3 extends Poly

    Permalink
  145. trait Poly4 extends Poly

    Permalink
  146. trait Poly5 extends Poly

    Permalink
  147. trait Poly6 extends Poly

    Permalink
  148. trait Poly7 extends Poly

    Permalink
  149. trait Poly8 extends Poly

    Permalink
  150. trait Poly9 extends Poly

    Permalink
  151. trait PolyApply extends AnyRef

    Permalink
  152. trait PolyInst extends AnyRef

    Permalink
  153. class PolyMacros extends AnyRef

    Permalink
  154. trait PolymorphicEqualityFacet extends ProductISOFacet

    Permalink
  155. final class Primary[+A] extends OrElse[A, Nothing]

    Permalink
  156. trait Prism[S, A] extends LPPrism[S, A]

    Permalink
  157. trait ProductArgs extends Dynamic

    Permalink

    Trait supporting mapping dynamic argument lists to HList arguments.

    Trait supporting mapping dynamic argument lists to HList arguments.

    Mixing in this trait enables method applications of the form,

    lhs.method(23, "foo", true)

    to be rewritten as,

    lhs.methodProduct(23 :: "foo" :: true)

    ie. the arguments are rewritten as HList elements and the application is rewritten to an application of an implementing method (identified by the "Product" suffix) which accepts a single HList argument.

  158. trait ProductFacet extends ProductISOFacet

    Permalink
  159. trait ProductISOFacet extends CaseClassFacet

    Permalink
  160. trait ProductLensBuilder[C, P <: Product] extends Lens[C, P] with Serializable

    Permalink
  161. class ProductMacros extends SingletonTypeUtils with NatMacroDefns

    Permalink
  162. trait ProductPrismBuilder[C, P <: Product] extends Prism[C, P] with Serializable

    Permalink
  163. trait ProductTypeClass[C[_]] extends Serializable

    Permalink

    A type class abstracting over the product operation of type classes over types of kind *, as well as deriving instances using an isomorphism.

  164. trait ProductTypeClassCompanion[C[_]] extends Serializable

    Permalink
  165. trait RecordArgs extends Dynamic

    Permalink

    Trait supporting mapping named argument lists to record arguments.

    Trait supporting mapping named argument lists to record arguments.

    Mixing in this trait enables method applications of the form,

    lhs.method(x = 23, y = "foo", z = true)

    to be rewritten as,

    lhs.methodRecord('x ->> 23 :: 'y ->> "foo", 'z ->> true)

    ie. the named arguments are rewritten as record fields with the argument name encoded as a singleton-typed Symbol and the application is rewritten to an application of an implementing method (identified by the "Record" suffix) which accepts a single record argument.

  166. class RecordMacros extends AnyRef

    Permalink
  167. trait Refute[T] extends AnyRef

    Permalink

    Evidence that no implicit instance of type T is available

  168. trait ReprTypes extends AnyRef

    Permalink
  169. final class Secondary[+B] extends OrElse[Nothing, B]

    Permalink
  170. trait Segment[P, S, T <: HList] extends AnyRef

    Permalink
  171. trait Select[T] extends AnyRef

    Permalink
  172. trait SingletonProductArgs extends Dynamic

    Permalink

    Trait supporting mapping dynamic argument lists to singleton-typed HList arguments.

    Trait supporting mapping dynamic argument lists to singleton-typed HList arguments.

    Mixing in this trait enables method applications of the form,

    lhs.method(23, "foo", true)

    to be rewritten as,

    lhs.methodProduct(23.narrow :: "foo".narrow :: true.narrow)

    ie. the arguments are rewritten as singleton-typed HList elements and the application is rewritten to an application of an implementing method (identified by the "Product" suffix) which accepts a single HList argument.

  173. class SingletonTypeMacros extends SingletonTypeUtils with NatMacroDefns

    Permalink
  174. trait SingletonTypeUtils extends ReprTypes

    Permalink
  175. final class Sized[+Repr, L <: Nat] extends AnyRef

    Permalink

    Wrapper for a collection type witnessing that it has the statically specified length.

    Wrapper for a collection type witnessing that it has the statically specified length. Can be applied to any type which can be viewed as a GenTraversableLike, ie. standard collections, Arrays, Strings etc.

  176. class SizedBuilder[CC[_]] extends AnyRef

    Permalink
  177. class SizedOps[A0, Repr, L <: Nat] extends AnyRef

    Permalink

    Carrier for Sized operations.

    Carrier for Sized operations.

    These operations are implemented here as extension methods of the minimal Sized type to avoid issues that would otherwise be caused by its covariance.

  178. trait Split1[L[_], FO[_[_]], FI[_[_]]] extends Serializable

    Permalink
  179. trait Split10 extends AnyRef

    Permalink
  180. class Split1Macros extends CaseClassMacros

    Permalink
  181. trait Strict[+T] extends Serializable

    Permalink

    Wraps an eagerly computed value.

    Wraps an eagerly computed value. Prevents wrongly reported implicit divergence, like Lazy does, but, unlike it, does not circumvent implicit cycles.

    Creation of Lazy instances usually triggers the creation of an anonymous class, to compute the wrapped value (e.g. with the by-name argument of Lazy.apply). Strict avoids that, which can lead to less overhead during compilation.

  182. case class Succ[P <: Nat]() extends Nat with Product with Serializable

    Permalink

    Encoding of successor.

  183. class TestMacros extends AnyRef

    Permalink
  184. class TheMacros extends AnyRef

    Permalink
  185. trait ToStringFacet extends ProductFacet

    Permalink
  186. trait TupleTypeableInstances extends AnyRef

    Permalink
  187. trait TypeCase[T] extends Serializable

    Permalink

    Extractor for use of Typeable in pattern matching.

    Extractor for use of Typeable in pattern matching.

    Thanks to Stacy Curl for the idea.

  188. trait TypeClass[C[_]] extends ProductTypeClass[C]

    Permalink

    A type class additionally abstracting over the coproduct operation of type classes over types of kind *.

  189. trait TypeClassCompanion[C[_]] extends ProductTypeClassCompanion[C]

    Permalink
  190. trait Typeable[T] extends Serializable

    Permalink

    Type class supporting type safe cast.

  191. class TypeableMacros extends SingletonTypeUtils

    Permalink
  192. trait UnaryTCConstraint[L <: HList, TC[_]] extends Serializable

    Permalink

    Type class witnessing that every element of L has TC as its outer type constructor.

  193. class UnionMacros extends AnyRef

    Permalink
  194. trait Unpack1[-PP, FF[_], A] extends AnyRef

    Permalink

    Type class witnessing that type PP is equal to FF[A] for some higher kinded type FF[_] and type(s) A.

  195. trait Unpack10[-PP, FF[_, _, _, _, _, _, _, _, _, _], A, B, C, D, E, F, G, H, I, J] extends AnyRef

    Permalink

    Type class witnessing that type PP is equal to FF[A, B, C, D, E, F, G, H, I, J] for some higher kinded type FF[_, _, _, _, _, _, _, _, _, _] and type(s) A, B, C, D, E, F, G, H, I, J.

  196. trait Unpack11[-PP, FF[_, _, _, _, _, _, _, _, _, _, _], A, B, C, D, E, F, G, H, I, J, K] extends AnyRef

    Permalink

    Type class witnessing that type PP is equal to FF[A, B, C, D, E, F, G, H, I, J, K] for some higher kinded type FF[_, _, _, _, _, _, _, _, _, _, _] and type(s) A, B, C, D, E, F, G, H, I, J, K.

  197. trait Unpack12[-PP, FF[_, _, _, _, _, _, _, _, _, _, _, _], A, B, C, D, E, F, G, H, I, J, K, L] extends AnyRef

    Permalink

    Type class witnessing that type PP is equal to FF[A, B, C, D, E, F, G, H, I, J, K, L] for some higher kinded type FF[_, _, _, _, _, _, _, _, _, _, _, _] and type(s) A, B, C, D, E, F, G, H, I, J, K, L.

  198. trait Unpack13[-PP, FF[_, _, _, _, _, _, _, _, _, _, _, _, _], A, B, C, D, E, F, G, H, I, J, K, L, M] extends AnyRef

    Permalink

    Type class witnessing that type PP is equal to FF[A, B, C, D, E, F, G, H, I, J, K, L, M] for some higher kinded type FF[_, _, _, _, _, _, _, _, _, _, _, _, _] and type(s) A, B, C, D, E, F, G, H, I, J, K, L, M.

  199. trait Unpack14[-PP, FF[_, _, _, _, _, _, _, _, _, _, _, _, _, _], A, B, C, D, E, F, G, H, I, J, K, L, M, N] extends AnyRef

    Permalink

    Type class witnessing that type PP is equal to FF[A, B, C, D, E, F, G, H, I, J, K, L, M, N] for some higher kinded type FF[_, _, _, _, _, _, _, _, _, _, _, _, _, _] and type(s) A, B, C, D, E, F, G, H, I, J, K, L, M, N.

  200. trait Unpack15[-PP, FF[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _], A, B, C, D, E, F, G, H, I, J, K, L, M, N, O] extends AnyRef

    Permalink

    Type class witnessing that type PP is equal to FF[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O] for some higher kinded type FF[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _] and type(s) A, B, C, D, E, F, G, H, I, J, K, L, M, N, O.

  201. trait Unpack16[-PP, FF[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _], A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P] extends AnyRef

    Permalink

    Type class witnessing that type PP is equal to FF[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P] for some higher kinded type FF[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] and type(s) A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P.

  202. trait Unpack17[-PP, FF[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _], A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q] extends AnyRef

    Permalink

    Type class witnessing that type PP is equal to FF[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q] for some higher kinded type FF[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] and type(s) A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q.

  203. trait Unpack18[-PP, FF[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _], A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R] extends AnyRef

    Permalink

    Type class witnessing that type PP is equal to FF[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R] for some higher kinded type FF[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] and type(s) A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R.

  204. trait Unpack19[-PP, FF[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _], A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S] extends AnyRef

    Permalink

    Type class witnessing that type PP is equal to FF[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S] for some higher kinded type FF[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] and type(s) A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S.

  205. trait Unpack2[-PP, FF[_, _], A, B] extends AnyRef

    Permalink

    Type class witnessing that type PP is equal to FF[A, B] for some higher kinded type FF[_, _] and type(s) A, B.

  206. trait Unpack20[-PP, FF[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _], A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T] extends AnyRef

    Permalink

    Type class witnessing that type PP is equal to FF[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T] for some higher kinded type FF[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] and type(s) A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T.

  207. trait Unpack21[-PP, FF[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _], A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U] extends AnyRef

    Permalink

    Type class witnessing that type PP is equal to FF[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U] for some higher kinded type FF[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] and type(s) A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U.

  208. trait Unpack22[-PP, FF[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _], A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V] extends AnyRef

    Permalink

    Type class witnessing that type PP is equal to FF[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V] for some higher kinded type FF[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] and type(s) A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V.

  209. trait Unpack3[-PP, FF[_, _, _], A, B, C] extends AnyRef

    Permalink

    Type class witnessing that type PP is equal to FF[A, B, C] for some higher kinded type FF[_, _, _] and type(s) A, B, C.

  210. trait Unpack4[-PP, FF[_, _, _, _], A, B, C, D] extends AnyRef

    Permalink

    Type class witnessing that type PP is equal to FF[A, B, C, D] for some higher kinded type FF[_, _, _, _] and type(s) A, B, C, D.

  211. trait Unpack5[-PP, FF[_, _, _, _, _], A, B, C, D, E] extends AnyRef

    Permalink

    Type class witnessing that type PP is equal to FF[A, B, C, D, E] for some higher kinded type FF[_, _, _, _, _] and type(s) A, B, C, D, E.

  212. trait Unpack6[-PP, FF[_, _, _, _, _, _], A, B, C, D, E, F] extends AnyRef

    Permalink

    Type class witnessing that type PP is equal to FF[A, B, C, D, E, F] for some higher kinded type FF[_, _, _, _, _, _] and type(s) A, B, C, D, E, F.

  213. trait Unpack7[-PP, FF[_, _, _, _, _, _, _], A, B, C, D, E, F, G] extends AnyRef

    Permalink

    Type class witnessing that type PP is equal to FF[A, B, C, D, E, F, G] for some higher kinded type FF[_, _, _, _, _, _, _] and type(s) A, B, C, D, E, F, G.

  214. trait Unpack8[-PP, FF[_, _, _, _, _, _, _, _], A, B, C, D, E, F, G, H] extends AnyRef

    Permalink

    Type class witnessing that type PP is equal to FF[A, B, C, D, E, F, G, H] for some higher kinded type FF[_, _, _, _, _, _, _, _] and type(s) A, B, C, D, E, F, G, H.

  215. trait Unpack9[-PP, FF[_, _, _, _, _, _, _, _, _], A, B, C, D, E, F, G, H, I] extends AnyRef

    Permalink

    Type class witnessing that type PP is equal to FF[A, B, C, D, E, F, G, H, I] for some higher kinded type FF[_, _, _, _, _, _, _, _, _] and type(s) A, B, C, D, E, F, G, H, I.

  216. trait Unwrapped[W] extends Serializable

    Permalink
  217. trait UnwrappedInstances extends LowPriorityUnwrappedInstances

    Permalink
  218. trait ValueConstraint[L <: HList, M <: HList] extends Serializable

    Permalink

    Type class witnessing that every element of L is of the form FieldType[K, V] where V is an element of M.

  219. trait Widen[T] extends DepFn1[T]

    Permalink

    Provides the widen type of a singleton type.

    Provides the widen type of a singleton type.

    Type member Out of an implicitly available Witness[T] instance is the widen type of T, and the apply method explicitly converts a T to an Out.

    E.g. if T is Witness.2.T, Out is Int.

    It somehow complements Witness, providing the corresponding non-witnessed standard type, if any.

    Example of use, {{ val w = Widen[Witness.2.T] // w.Out is Int // w(2) is typed as Int }}

  220. trait Witness extends Serializable

    Permalink

    Provides the value corresponding to a singleton type.

    Provides the value corresponding to a singleton type.

    See SIP-23 for a related proposed language change.

  221. trait WitnessWith[TC[_]] extends Witness

    Permalink
  222. case class WrappedOrphan[T](instance: T) extends Product with Serializable

    Permalink
  223. case class Zipper[C, L <: HList, R <: HList, P](prefix: L, suffix: R, parent: P) extends Product with Serializable

    Permalink

    Generic Zipper for any type with a representation via Generic.

  224. class _0 extends Nat with Serializable

    Permalink

    Encoding of zero.

  225. class nonGeneric extends scala.annotation.Annotation with StaticAnnotation

    Permalink
  226. type |¬|[T] = AnyRef { type λ[U] = shapeless.package.<:!<[U,T] }

    Permalink
  227. type |∨|[T, U] = AnyRef { type λ[X] = <:<[shapeless.package.¬¬[X],shapeless.package.∨[T,U]] }

    Permalink
  228. class ~?>[K[_], V[_]] extends Serializable

    Permalink

    Type class witnessing the existence of a natural transformation between K[_] and V[_].

    Type class witnessing the existence of a natural transformation between K[_] and V[_].

    Use this trait to represent an HMap relation of the form K[T] maps to V[T].

  229. type ¬[T] = (T) ⇒ Nothing

    Permalink
  230. type ¬¬[T] = (¬[T]) ⇒ Nothing

    Permalink
  231. type [P[_]] = ([[X](P[X]) ⇒ Nothing]) ⇒ Nothing

    Permalink
  232. type [P[_]] = P[_]

    Permalink
  233. type [T, U] = T with U

    Permalink
  234. type [T, U] = ([¬[T], ¬[U]]) ⇒ Nothing

    Permalink

Value Members

  1. object AdditiveCollection extends Serializable

    Permalink
  2. object Annotation extends Serializable

    Permalink
  3. object Annotations extends Serializable

    Permalink
  4. object BasisConstraint extends Serializable

    Permalink
  5. object BuildInfo extends Product with Serializable

    Permalink

    This object was generated by sbt-buildinfo.

  6. object Cached extends Serializable

    Permalink
  7. object CachedMacros

    Permalink
  8. object Coproduct extends Dynamic with Serializable

    Permalink
  9. object Data extends Data1 with Serializable

    Permalink
  10. object DataT extends DataT1 with Serializable

    Permalink
  11. object Default extends Serializable

    Permalink
  12. object DefaultSymbolicLabelling extends Serializable

    Permalink
  13. object EverythingAux extends Serializable

    Permalink
  14. object EverywhereAux extends Serializable

    Permalink
  15. object Fin

    Permalink
  16. object Generic extends Serializable

    Permalink

    The companion object for the Generic trait provides a way of obtaining a Generic[T] instance for some T.

    The companion object for the Generic trait provides a way of obtaining a Generic[T] instance for some T. In addition, it defines Generic.Aux, which is an important implementation technique that can be generally useful.

  17. object Generic1 extends Generic10 with Serializable

    Permalink
  18. object HList extends Dynamic with Serializable

    Permalink
  19. object HMap extends Serializable

    Permalink
  20. object HNil extends HNil with Product with Serializable

    Permalink

    Empty HList value.

  21. object HasCoproductGeneric extends Serializable

    Permalink
  22. object HasProductGeneric extends Serializable

    Permalink
  23. object InferProduct extends Serializable

    Permalink
  24. object IsCCons1 extends IsCCons10 with Serializable

    Permalink
  25. object IsDistinctConstraint extends Serializable

    Permalink
  26. object IsHCons1 extends IsHCons10 with Serializable

    Permalink
  27. object IsTuple extends Serializable

    Permalink
  28. object KeyConstraint extends Serializable

    Permalink
  29. object LUBConstraint extends Serializable

    Permalink
  30. object LabelledGeneric extends Serializable

    Permalink
  31. object Lazy extends Serializable

    Permalink
  32. object LazyMacros extends LazyMacrosCompat

    Permalink
  33. object LowPriority extends Serializable

    Permalink
  34. object Lub extends Serializable

    Permalink
  35. object MkCoproductSelectPrism extends Serializable

    Permalink
  36. object MkCtorPrism extends Serializable

    Permalink
  37. object MkFieldLens extends Serializable

    Permalink
  38. object MkGenericLens extends Serializable

    Permalink
  39. object MkHListNthLens extends Serializable

    Permalink
  40. object MkHListSelectLens extends Serializable

    Permalink
  41. object MkLabelledGenericLens extends Serializable

    Permalink
  42. object MkNthFieldLens extends Serializable

    Permalink
  43. object MkPathOptic extends LowPriorityMkPathOptic with Serializable

    Permalink
  44. object MkRecordSelectLens extends Serializable

    Permalink
  45. object MkSelectDynamicOptic extends LowPriorityMkSelectDynamicOptic with Serializable

    Permalink
  46. object Nat extends Nats

    Permalink

    Type level encoding of the natural numbers.

  47. object NatWith

    Permalink
  48. object NotContainsConstraint extends Serializable

    Permalink
  49. object OpticComposer extends Serializable

    Permalink
  50. object OpticDefns

    Permalink
  51. object OrElse extends OrElse0

    Permalink
  52. object Orphan extends Serializable

    Permalink
  53. object Path extends Path[HNil]

    Permalink
  54. object Poly extends PolyInst with Serializable

    Permalink

    Provides implicit conversions from polymorphic function values to monomorphic function values, eg.

    Provides implicit conversions from polymorphic function values to monomorphic function values, eg. for use as arguments to ordinary higher order functions.

  55. object Poly1 extends Poly1Builder[HNil] with Serializable

    Permalink
  56. object Poly10 extends Poly10Builder[HNil] with Serializable

    Permalink
  57. object Poly11 extends Poly11Builder[HNil] with Serializable

    Permalink
  58. object Poly12 extends Poly12Builder[HNil] with Serializable

    Permalink
  59. object Poly13 extends Poly13Builder[HNil] with Serializable

    Permalink
  60. object Poly14 extends Poly14Builder[HNil] with Serializable

    Permalink
  61. object Poly15 extends Poly15Builder[HNil] with Serializable

    Permalink
  62. object Poly16 extends Poly16Builder[HNil] with Serializable

    Permalink
  63. object Poly17 extends Poly17Builder[HNil] with Serializable

    Permalink
  64. object Poly18 extends Poly18Builder[HNil] with Serializable

    Permalink
  65. object Poly19 extends Poly19Builder[HNil] with Serializable

    Permalink
  66. object Poly2 extends Poly2Builder[HNil] with Serializable

    Permalink
  67. object Poly20 extends Poly20Builder[HNil] with Serializable

    Permalink
  68. object Poly21 extends Poly21Builder[HNil] with Serializable

    Permalink
  69. object Poly22 extends Poly22Builder[HNil] with Serializable

    Permalink
  70. object Poly3 extends Poly3Builder[HNil] with Serializable

    Permalink
  71. object Poly4 extends Poly4Builder[HNil] with Serializable

    Permalink
  72. object Poly5 extends Poly5Builder[HNil] with Serializable

    Permalink
  73. object Poly6 extends Poly6Builder[HNil] with Serializable

    Permalink
  74. object Poly7 extends Poly7Builder[HNil] with Serializable

    Permalink
  75. object Poly8 extends Poly8Builder[HNil] with Serializable

    Permalink
  76. object Poly9 extends Poly9Builder[HNil] with Serializable

    Permalink
  77. object PolyDefns extends Cases

    Permalink
  78. object PolyNBuilders

    Permalink

    Provides elegant syntax for creating polys from functions

  79. object Refute

    Permalink
  80. object Segment extends LowPrioritySegment

    Permalink
  81. object Sized extends LowPrioritySized

    Permalink
  82. object Split1 extends Split10 with Serializable

    Permalink
  83. object Strict extends Serializable

    Permalink
  84. object Tuple

    Permalink
  85. object TypeCase extends Serializable

    Permalink
  86. object TypeOf extends Dynamic

    Permalink
  87. object Typeable extends TupleTypeableInstances with LowPriorityTypeable with Serializable

    Permalink

    Provides instances of Typeable.

    Provides instances of Typeable. Also provides an implicit conversion which enhances arbitrary values with a cast[T] method.

  88. object UnaryTCConstraint extends LowPriorityUnaryTCConstraint with Serializable

    Permalink
  89. object Unpack1

    Permalink
  90. object Unpack10

    Permalink
  91. object Unpack11

    Permalink
  92. object Unpack12

    Permalink
  93. object Unpack13

    Permalink
  94. object Unpack14

    Permalink
  95. object Unpack15

    Permalink
  96. object Unpack16

    Permalink
  97. object Unpack17

    Permalink
  98. object Unpack18

    Permalink
  99. object Unpack19

    Permalink
  100. object Unpack2

    Permalink
  101. object Unpack20

    Permalink
  102. object Unpack21

    Permalink
  103. object Unpack22

    Permalink
  104. object Unpack3

    Permalink
  105. object Unpack4

    Permalink
  106. object Unpack5

    Permalink
  107. object Unpack6

    Permalink
  108. object Unpack7

    Permalink
  109. object Unpack8

    Permalink
  110. object Unpack9

    Permalink
  111. object Unwrapped extends UnwrappedInstances with Serializable

    Permalink
  112. object ValueConstraint extends Serializable

    Permalink
  113. object Widen

    Permalink
  114. object Witness extends Dynamic with Serializable

    Permalink
  115. object WitnessWith extends LowPriorityWitnessWith with Serializable

    Permalink
  116. object WrappedOrphan extends Serializable

    Permalink
  117. object Zipper extends Serializable

    Permalink
  118. val ^: Path.type

    Permalink
  119. macro def cachedImplicit[T]: T

    Permalink
  120. def everything(f: Poly): ApplyEverything[f.type]

    Permalink
  121. def everywhere(f: Poly): EverywhereAux[f.type]

    Permalink
  122. val fin: Fin.type

    Permalink

    'Fin'

  123. object labelled

    Permalink
  124. object lazily

    Permalink
  125. val lens: OpticDefns.type

    Permalink
  126. val nat: Nat.type

    Permalink

    Nat literals

  127. implicit def neq[A, B]: =:!=[A, B]

    Permalink
  128. implicit def neqAmbig1[A]: =:!=[A, A]

    Permalink
  129. implicit def neqAmbig2[A]: =:!=[A, A]

    Permalink
  130. object newtype

    Permalink
  131. implicit def nsub[A, B]: <:!<[A, B]

    Permalink
  132. implicit def nsubAmbig1[A, B >: A]: <:!<[A, B]

    Permalink
  133. implicit def nsubAmbig2[A, B >: A]: <:!<[A, B]

    Permalink
  134. package ops

    Permalink
  135. val optic: OpticDefns.type

    Permalink

    Optic definitions

  136. val poly: PolyDefns.type

    Permalink

    Poly definitions

  137. val prism: OpticDefns.type

    Permalink
  138. object productElements extends Poly1

    Permalink

    Higher ranked function which converts products to HLists.

  139. object record

    Permalink

    Record operations on HList's with field-like elements.

  140. package syntax

    Permalink
  141. object tag

    Permalink
  142. package test

    Permalink
  143. object the extends Dynamic

    Permalink

    An enhanced alternative to Predef.implicitly.

    An enhanced alternative to Predef.implicitly.

    Used as a term the[T] yields the unique implicit value of type T in the current implicit scope, if any. It is a compile time error if there is no such value. Its primary advantage over Predef.implicitly is that it will preserve any refinement that the implicit definition has, resulting in more precisely typed, and hence often more useful, values,

    scala> trait Foo { type T ; val t: T }
    defined trait Foo
    
    scala> implicit val intFoo: Foo { type T = Int } = new Foo { type T = Int ; val t = 23 }
    intFoo: Foo{type T = Int} = $anon$1@6067b682
    
    scala> implicitly[Foo].t  // implicitly loses precision
    res0: Foo#T = 23
    
    scala> implicitly[Foo].t+13
    <console>:13: error: type mismatch;
     found   : Int(13)
     required: String
                  implicitly[Foo].t+13
                                    ^
    
    scala> the[Foo].t         // the retains it
    res1: Int = 23
    
    scala> the[Foo].t+13
    res2: Int = 36

    Unlike implicitly, the can also be used in type position, thanks to a trick due to Denys Shabalin (@den_sh) and Eugene Burmako (@xeno_by). Here we use a combination of selectDynamic and backticks to embed a type in a path which appears to the compiler as stable,

    scala> val i: implicitly[Foo].T = 23  // syntax error
    <console>:1: error: ';' expected but '.' found.
           val i: implicitly[Foo].T = 23
                                 ^
    scala> val i: the.`Foo`.T = 23        // OK
    i: Int = 23
  144. object tupled extends Poly1

    Permalink

    Higher ranked function which converts HLists to tuples.

  145. def unexpected: Nothing

    Permalink
  146. object union

    Permalink
  147. object ~?> extends NatTRel0 with Serializable

    Permalink

Inherited from AnyRef

Inherited from Any

Ungrouped