
As we already have IsList, shouldn't we just do this? class (IsList l, Item l ~ Char) => IsString l instance (a ~ Char) => IsString [a] instance (a ~ Char) => IsString (NonEmpty a) instance (a ~ Char) => IsString (ZipList a)

This would require desugaring string literals using `fromListN`, which
would require GHC effort.
Also, consider ByteString. Is `Item ByteString` `Word8` or `Char`?
Additionally, I'm not convinced this coupling really buys us much. You
could always define `fromString = fromList`.
On Fri, Jun 5, 2020, 11:12 PM Dannyu NDos
As we already have IsList, shouldn't we just do this?
class (IsList l, Item l ~ Char) => IsString l
instance (a ~ Char) => IsString [a] instance (a ~ Char) => IsString (NonEmpty a) instance (a ~ Char) => IsString (ZipList a) _______________________________________________ Libraries mailing list Libraries@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries

There are some things which I've seen with IsString instances which can't
have toList applied to them, like parsers.
On Sat, Jun 6, 2020, 01:25 chessai .
This would require desugaring string literals using `fromListN`, which would require GHC effort.
Also, consider ByteString. Is `Item ByteString` `Word8` or `Char`?
Additionally, I'm not convinced this coupling really buys us much. You could always define `fromString = fromList`.
On Fri, Jun 5, 2020, 11:12 PM Dannyu NDos
wrote: As we already have IsList, shouldn't we just do this?
class (IsList l, Item l ~ Char) => IsString l
instance (a ~ Char) => IsString [a] instance (a ~ Char) => IsString (NonEmpty a) instance (a ~ Char) => IsString (ZipList a) _______________________________________________ Libraries mailing list Libraries@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
_______________________________________________ Libraries mailing list Libraries@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries

Ah, good point Zemyla. Also HtmlT, from Lucid.
On Sat, Jun 6, 2020, 4:12 AM Zemyla
There are some things which I've seen with IsString instances which can't have toList applied to them, like parsers.
On Sat, Jun 6, 2020, 01:25 chessai .
wrote: This would require desugaring string literals using `fromListN`, which would require GHC effort.
Also, consider ByteString. Is `Item ByteString` `Word8` or `Char`?
Additionally, I'm not convinced this coupling really buys us much. You could always define `fromString = fromList`.
On Fri, Jun 5, 2020, 11:12 PM Dannyu NDos
wrote: As we already have IsList, shouldn't we just do this?
class (IsList l, Item l ~ Char) => IsString l
instance (a ~ Char) => IsString [a] instance (a ~ Char) => IsString (NonEmpty a) instance (a ~ Char) => IsString (ZipList a) _______________________________________________ Libraries mailing list Libraries@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
_______________________________________________ Libraries mailing list Libraries@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries

On 2020-06-06 2:11 a.m., Dannyu NDos wrote:
As we already have IsList, shouldn't we just do this?
class(IsListl, Iteml~Char) => IsStringl instance(a~Char) => IsString[a] instance(a~Char) => IsString(NonEmptya) instance(a~Char) => IsString(ZipLista)
That's not a generalization, it's a restriction. It would, for example, exclude both ByteString (whose IsString instance is admittedly broken) and ByteStringUTF8 (whose isn't).
participants (4)
-
chessai .
-
Dannyu NDos
-
Mario
-
Zemyla