Типы сумм - почему в Haskell `show (Int | Double)` отличается от `(show Int) | (показать дубль) `

Почему они не эквивалентны? show $ if someCondition then someInt else some double а также if someCondition then show someInt else show someDouble Я понимаю, что если вы изолируете if ... elseчасть в первом примере от выражения, то вы не сможете представить его тип анонимным типом суммы Int |...