discriminate unions based on return type - Theo's Typesafe Cult