Discriminated unions encoded as Coproducts of their value types intersected with
the singleton types of their keys.
Union 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,
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 union types using Scala's
named argument syntax. Values of the type just defined can be created as follows,
val y = Union[Xyx](y = "foo")
y.get('y) // == Some("foo")
Discriminated unions encoded as
Coproducts
of their value types intersected with the singleton types of their keys.Union 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,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 union types using Scala's named argument syntax. Values of the type just defined can be created as follows,