UPDATED: Added improved generics with higher-kinded polymorphism There was a good discussion on Twitter a couple of nights ago that arose due to some issues that with an expression that might return a value, or might not (void) and how you handle them. From those questions an interesting question...