Because what IsString essentially does is it adds implicit conversions.
Implicit conversions make code harder to understand. They also lead to
all sorts of WATs. (See the famous presentation.)
We can already make Perlish things like
instance IsString Int where fromString = length
I think we need some rules telling us what is or is not okay.
To be clear, people should be able to declare whatever instances they
think are reasonable in their code. But it's a different matter to make
this effectively part of the language.
Roman
* John Lato
To play devil's advocate, why?
What does limiting IsString in this fashion gain anyone? It doesn't complicate type inference any more than it already is. For any applicative, there's the trivial instance
instance (IsString a, Applicative t) => IsString (t a) where fromString = pure . fromString
which is conceptually a very simple step and is always total.
Of course some functors admit other instances. I think some parser libraries already provide IsString instances as a nice syntax on matching string literals. A rule like this would invalidate those instances for no particularly good reason I can see.
On Fri, Jul 12, 2013 at 4:22 AM, Sjoerd Visscher
wrote: Could this be formalised by saying that there should be a function toString such that
fromString . toString = id
There's no such toString for "Maybe a" with fromString = Just.
Sjoerd
On Jul 10, 2013, at 4:02 PM, David Luposchainsky < dluposchainsky@googlemail.com> wrote:
On 2013-07-10 15:55, Joachim Breitner wrote:
Hi,
Am Mittwoch, den 10.07.2013, 09:21 +1000 schrieb Ivan Lazar Miljenovic:
-0.5 from me; I think it's too easy to forget that it's a Maybe value there when refactoring, etc.
same here; even with OverloadedStrings Haskell should feel as strongly typed as it is.
Agreed. Overloaded strings should be reserved for things that *are* strings in a certain way. A "Maybe String" is not a special way of storing a string (like for example a "Vector Char"), it's a String with an additional value. Providing a Maybe instance goes too far in the direction of having a general "'return' with strings" function, so I'm -1 on this.
David
_______________________________________________ Libraries mailing list Libraries@haskell.org http://www.haskell.org/mailman/listinfo/libraries
_______________________________________________ Libraries mailing list Libraries@haskell.org http://www.haskell.org/mailman/listinfo/libraries
_______________________________________________ Libraries mailing list Libraries@haskell.org http://www.haskell.org/mailman/listinfo/libraries