The Expression Problem: Why Java’s Sealed Interfaces Are One Answer, Not The Answer
Adding a new type is trivial in object-oriented code. Adding a new operation is trivial in functional code. Nobody has ever gotten both for free, and understanding why explains a l...