Hacker News new | past | comments | ask | show | jobs | submit login

That's an issue with Data.ByteString.Char8, not with OverloadedStrings.



When you use OverloadedStrings in conjunction with Data.ByteString.Char8 it becomes OverloadedStrings' issue as well. Compile-time transformations are not supposed to break your program.


I don't think of it as a compile-time transformation but instead a weakening of the semantics of string literals. Without we have

    "foo" :: String
and with we have

    "foo" :: IsString a => a
much like

    3 :: Num a => a
It inherits all of the same weaknesses and strengths that we have with the Num typeclass.


Ahh, very good. Then perhaps our target of inquiry ought to be the IsString class. Ought it have some laws we can expect instances to follow, akin to the Monad laws? At the moment, we can write:

    instance IsString () where
    fromString = const ()
And there's nothing wrong with it!


Totally agree that it's a weak class. I'd love it if `IsList` were a subclass of `Foldable`!




Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: