Records encoded as HLists
of their value types intersected with the
singleton types of their keys.
Records encoded as HLists
of their value types intersected with the
singleton types of their keys.
Record types may be written using a relatively concise syntax thanks to a trick
due to Denys Shabalin (@den_sh) and Eugene Burmako (@xeno_by). We use a
combination of selectDynamic
and backticks to embed a type in a path which
appears to the compiler as stable,
type Xyz = Record.`'x -> Int, 'y -> String, 'z -> Boolean`.T
The use of singleton-typed Symbols
as keys would make this type extremely
laborious to write out by hand.
There is also a mechanism for creating values of record types using Scala's named argument syntax. Values of the type just defined can be created as follows,
val xyz = Record(x = 23, y = "foo", z = true) xyz('y) // == "foo"
Record operations on
HList
's with field-like elements.