
For sum types you need a way to construct them and pattern match them. Without a way to _name_ them, it would probably look like this:
showError :: (Result | Error3 | Error8) -> String showError (result ||) = "no error" showError (| error3 |) = "error3: " ++ show error3 showError (|| error8 |) = "error8: " ++ show error8
It's not the most readable code, so I'd generally avoid using it for anything greater than 3 (same applies to tuples). This approach misses the essence of sum type tuples, which is
On 2015-07-31 18:44, Phil Ruffwind wrote: positional. It needs to be something like showError :: (Result | Error3 | Error) -> String showError = case of result -> "no error" | error3 -> "error3: " ++ show error3 | error3 -> "error8: " ++ show error8 This is just to illustrate the overall structure that's needed. I don't think think the above "|" syntax would ever fit into Haskell, because it would be confused with pattern guards.