If only all languages had sum types …
I mean the sum type A+B is by definition just a type with maps A => A+B, B => A+B and for each two functions A => X and B => X a function A+B => X compatible with both maps. Even if the language doesn't support it it's easy enough to make one.
Syntax is nicer with language support though.
Somewhat interestingly the visitor pattern is even useful in languages that have sum types as it makes it easier to implement generic traversals!