Hacker News new | ask | show | jobs
by blahblarblar 1562 days ago
Did they fix strings?
1 comments

Yes, there's now `Data.Text` https://hackage.haskell.org/package/text-2.0/docs/Data-Text.... which is widely supported
The real fix will happen when Data.Text moves from UTF-16 to UTF-8:

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.

> The real fix will happen when Data.Text moves from UTF-16 to UTF-8:

This work was completed a while ago.

https://hackage.haskell.org/package/text-2.0/changelog

> I don't know the timeline for its implementation in GHC.

Data.Text is a library, not a compiler feature, so completing it was not tied to GHC.

UTF-8 as the de facto for `text` was merged a few months ago. It's in >=2.0.
The most recent release is utf8
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.

It’s been a while since I worked with Haskell. What’s the issue with Strings, I’m guessing it must be Unicode-related?
Strings are linked lists of characters, so they perform quite badly