<div dir="ltr">I've noticed improved list performance in GHC 7.10.1. In GHC 7.8, a simple "sum" function worked faster on a "Stream" than a List, a Stream being a data type with a state and successor function. The List version was around 10 times slower than the stream version when it came to summing Ints. <div><br></div><div>However GHC 7.10.1 compiles the list away, so the list version, stream version, and accumulating parameter recursive function version now all run in the same time.</div><div><br></div><div>If GHC continues to learn to optimise away lists effectively, [Char] may not be a performance issue after all.<br><div><br></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, May 19, 2015 at 2:47 PM, Mateusz Kowalczyk <span dir="ltr"><<a href="mailto:fuuzetsu@fuuzetsu.co.uk" target="_blank">fuuzetsu@fuuzetsu.co.uk</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 05/18/2015 11:44 PM, Andrew Gibiansky wrote:<br>
> Hey all,<br>
><br>
> In the earlier haskell-cafe discussion of IsString, someone mentioned that<br>
> it would be nice to abandon [Char] as the blessed string type in Haskell.<br>
> I've thought about this on and off for a while now, and think that the fact<br>
> that [Char] is the default string type is a really big issue (for example,<br>
> it gives beginners the idea that Haskell is incredibly slow, because<br>
> everything that involves string processing is using linked lists).<br>
><br>
> I am not proposing anything, but am curious as to what already has been<br>
> discussed:<br>
<br>
</span>Just me few cents below.<br>
<span class=""><br>
> 1. Has the possibility of migrating away from [Char] been investigated<br>
> before?<br>
<br>
</span>Migrating away to what?<br>
<span class=""><br>
> 2. What gains could we see in ease of use, performance, etc, if [Char] was<br>
> deprecated?<br>
<br>
</span>Deprecated in favour of what?<br>
<span class=""><br>
> 3. What could replace [Char], while retaining the same ease of use for<br>
> writing string manipulation functions (pattern matching, etc)?<br>
<br>
</span>ViewPatterns could let us imitate the pattern match at least but you'd<br>
still have to reconstruct from a list on RHS. Basically to me you're<br>
asking whether we can work with lists, using usual list things including<br>
constructors and presumably all list-y functions but without using<br>
lists… We either want one or another ;). But depending on what we want<br>
and if you're willing to give up the : and [] syntax, one could probably<br>
do well here anyway. But in any scenario, you'd be breaking every piece<br>
of code using String ever anyway.<br>
<span class=""><br>
> 4. Is there any sort of migration path that would make this change feasible<br>
> in mainline Haskell in the medium term (2-5 years)?<br>
<br>
</span>I don't think we'll ever see String changed in any significant way by<br>
default unless great pains are taken to do so. As I mention, you'd<br>
probably be breaking everything using String. If you don't want to work<br>
with a list of characters then use a different thing, most likely Text.<br>
<br>
Honestly, if your only motivation is that beginners might get a wrong<br>
idea, I don't think anything along your questions is even worth<br>
considering. Usually it takes few minutes top to tell a newbie in<br>
#haskell that they probably want Text or whatever, if they even care.<br>
Trying very hard to change what we already have and still make it as<br>
accessible as it is today is simply something I can't justify in any way<br>
I try.<br>
<div class="HOEnZb"><div class="h5"><br>
> Thanks! I would welcome any references or links that my cursory googling<br>
> has failed to find.<br>
><br>
> -- Andrew<br>
><br>
><br>
<br>
</div></div><span class="HOEnZb"><font color="#888888">--<br>
Mateusz K.<br>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br>
</font></span></blockquote></div><br></div>