<div dir="ltr"><div dir="ltr"><span class="gmail-im"><br></span></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Apr 18, 2019 at 11:49 PM Andreas Abel <<a href="mailto:andreas.abel@ifi.lmu.de">andreas.abel@ifi.lmu.de</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
We definitely should /not/ repeat the choice made for <br>
Data.List.NonEmpty.NonEmpty.  Using non-empty lists /always/ requires a <br>
type synonym, like<br>
<br>
   import qualified Data.List.NonEmpty as NEList<br>
   type NEList = NEList.NonEmpty<br>
<br>
which is quite ugly, and type synonyms are sometimes expanded in GHC <br>
error messages, which causes additional trouble.<br></blockquote><div><br></div><div>I’m not sure what you mean here by “always requires a type synonym”—I typically use NonEmpty like any other module meant to be imported qualified, like Text, Vector, Map, Set, &c.:</div><div><br></div><div style="margin-left:40px"><div><span style="font-family:monospace,monospace">import Data.List.NonEmpty (NonEmpty)</span></div><span style="font-family:monospace,monospace">import qualified Data.List.NonEmpty as NonEmpty  -- or NE if I’m lazy</span></div><div style="margin-left:40px"><span style="font-family:monospace,monospace"><br></span></div><div style="margin-left:40px"><span style="font-family:monospace,monospace">example :: NonEmpty X -> Y</span></div><div><br></div></div></div>