"This is a fairly unique and cool aspect of Haskell, especially if you come from the C++ world".
That's not true at all - what Haskell has here that C++ or D don't is type inference so that explicit type annotations aren't needed. The read function in C++ would be
The article doesn't cover this but haskell's return type polymorphism is strictly more powerful because it can be used in cases where you don't know the type at compile time. Such a situation can occur with recursion on nested data types or with higher rank types.
Now, i bet with some hackery one could emulate this too, but I don't expect it to be legible.
That's not true at all - what Haskell has here that C++ or D don't is type inference so that explicit type annotations aren't needed. The read function in C++ would be