A followup question. What is the reason case and let expressions are treated differently in this case? I can see the error message saying about the type variable escaping its scope, but I don't understand how exactly this can happen with let.