Non-empty HList
element type.
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.
Type class witnessing that every element of L
is an element of M
.
Type class representing one-level generic queries.
Type class representing one-level generic transformations.
Dependent nullary function type.
Dependent unary function type.
Dependent binary function type.
The SYB everything combinator
The SYB everywhere combinator
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.
Polymorphic function that allows modifications on record fields while preserving the original key types.
Base trait for type level finite numbers, i.e.
Base trait for type level finite numbers, i.e. numbers less than some bound N
Encoding of successor.
Encoding of zero.
HList
ADT base trait.
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
.
HMap
s extend Poly
and hence are also polymorphic function values with type-specific
cases corresponding to the map's type-level key/value associations.
Empty HList
element type.
Type class witnessing that every element of L
is of the form FieldType[K, V]
where K
is an element of M
.
Type class witnessing that every element of L
is a subtype of B
.
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.
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.
Type class witnessing the least upper bound of a pair of types and providing conversions from each to their common supertype.
Base trait for type level natural numbers.
Base trait for polymorphic values.
Trait simplifying the creation of polymorphic values.
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.
A type class abstracting over the product
operation of type classes over
types of kind *
, as well as deriving instances using an isomorphism.
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.
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.
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,
Array
s, String
s etc.
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.
Encoding of successor.
Extractor for use of Typeable
in pattern matching.
Extractor for use of Typeable
in pattern matching.
Thanks to Stacy Curl for the idea.
A type class additionally abstracting over the coproduct
operation of type
classes over types of kind *
.
Type class supporting type safe cast.
Type class witnessing that every element of L
has TC
as its outer type constructor.
Type class witnessing that type PP
is equal to FF[A]
for some higher kinded type FF[_]
and type(s) A
.
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
.
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
.
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
.
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
.
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
.
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
.
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
.
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
.
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
.
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
.
Type class witnessing that type PP
is equal to FF[A, B]
for some higher kinded type FF[_, _]
and type(s) A, B
.
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
.
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
.
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
.
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
.
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
.
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
.
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
.
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
.
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
.
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
.
Type class witnessing that every element of L
is of the form FieldType[K, V]
where V
is an element of M
.
Generic Zipper for any type with a representation via Generic
.
Encoding of zero.
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]
.
Empty HList
value.
Type level encoding of the natural numbers.
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.
Provides instances of Typeable
.
Provides instances of Typeable
. Also provides an implicit conversion which enhances arbitrary values with a
cast[T]
method.
'Fin'
Nat
literals
Optic
definitions
Poly
definitions
Higher ranked function which converts products to HLists
.
Record operations on HList
's with field-like elements.
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
Higher ranked function which converts HLists
to tuples.