This typeclass with its implicit instances decides how two containers should be joined.
Supported containers are
Id for scalar values
Option for optional values
Seq for a vector of values
Those container types form an ordering from most specific to most abstract:
Id contains always one value
Option contains always zero or one value
Seq can contain any number of values
The rule to determine what the result type of joining two container types is that the result
is as generic as the more generic of both of the input types.
The implicit definitions in the companion object of join form evidence for this ordering.
This typeclass with its implicit instances decides how two containers should be joined.
Supported containers are
Id
for scalar valuesOption
for optional valuesSeq
for a vector of valuesThose container types form an ordering from most specific to most abstract:
Id
contains always one valueOption
contains always zero or one valueSeq
can contain any number of valuesThe rule to determine what the result type of joining two container types is that the result is as generic as the more generic of both of the input types.
The implicit definitions in the companion object of join form evidence for this ordering.