Also: libraries need to be fixed to accept Data.Text instead of String. IsString helps (it's a typeclass that contains all string types) but only if APIs take it instead of defaulting to String. Adding random string conversions to cope with legacy APIs is very annoying.
Huh, Data.Text has been around forever. And the datatype that you will find in almost any Haskell tutorial is still 'String'.
It is really a pain that any beginner in the Haskell language is learning what seems the obvious datatype for strings, i.e. String, and later has to unlearn that again.
https://discourse.haskell.org/t/hf-tech-proposal-1-utf-8-enc...
Fortunately this proposal has been accepted, but I don't know the timeline for its implementation in GHC.
Until then, working with UTF-8 is kind of convoluted
https://serokell.io/blog/haskell-with-utf8
Also: libraries need to be fixed to accept Data.Text instead of String. IsString helps (it's a typeclass that contains all string types) but only if APIs take it instead of defaulting to String. Adding random string conversions to cope with legacy APIs is very annoying.