<div dir="ltr"><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Jun 26, 2015 at 9:08 AM, Herbert Valerio Riedel <span dir="ltr"><<a href="mailto:hvr@gnu.org" target="_blank">hvr@gnu.org</a>></span> wrote:<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
We (see From: & CC: headers) propose, plain and simple, to turn the<br>
currently defined type-synonym<br>
<br>
  type FilePath = String<br>
<br>
into an abstract/opaque data type instead.<br>
<br>
Why/How/When?</blockquote><div><br></div><div><div class="gmail_default" style="font-size:small;display:inline">​I've had success with a slightly different "How":</div></div><div><div class="gmail_default" style="font-size:small;display:inline"><br></div></div><div><div class="gmail_default" style="font-size:small;display:inline">Phase 1: Replace FilePath with a type class, with instances for the old FilePath (i.e. String) and the new implementation.</div></div><div><div class="gmail_default" style="font-size:small;display:inline"><br></div></div><div><div class="gmail_default" style="font-size:small;display:inline">Phase 2:  Wait until a suitable amount of hackage builds without the string instance.</div></div><div><div class="gmail_default" style="font-size:small;display:inline"><br></div></div><div><div class="gmail_default" style="font-size:small;display:inline">Phase 3: Deprecate the String instance - move it to an old-filepath package.</div></div><div><div class="gmail_default" style="font-size:small;display:inline"><br></div></div><div><div class="gmail_default" style="font-size:small;display:inline">Phase 4: Replace the type class with the new implementation</div></div><div><div class="gmail_default" style="font-size:small;display:inline">​</div></div><div><div class="gmail_default" style="font-size:small;display:inline">This way the new implementation is available immediately, packages can begin converting at once, benefits can be assessed.</div></div></div></div></div>