3 ms·
A and B are free to be chosen by a producer of the generic Sum type. However, T can be chosen "late", by a consumer of Sum; a value of type Sum A B must work fo
by Twisol 6y ago
A and B are free to be chosen by a producer of the generic Sum type. However, T can be chosen "late", by a consumer of Sum; a value of type Sum A B must work for any T you decide to use down the line.
If it helps, the equivalent Java signature is:
interface Sum<A, B> {
<T> T visit(Function<A, T> onA, Function<B, T> onB);
}
Hopefully this makes it more clear that A and B are fixed when you receive a value of type Sum A B, but you get to pick a T when consuming that value.
- h_anna_h 6y agoThanks