Hi Daniel,<br><br>Some follow up on your comments:<br><br><div class="gmail_quote">On Thu, Dec 31, 2009 at 5:54 AM, Daniel Fischer <span dir="ltr">&lt;<a href="mailto:daniel.is.fischer@web.de">daniel.is.fischer@web.de</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div style="font-family: &#39;Sans Serif&#39;; font-size: 10pt; font-weight: 400; font-style: normal;">
<p style="margin: 0px; text-indent: 0px;">Am Donnerstag 31 Dezember 2009 10:59:54 schrieb John Van Enk:</p><div class="im">
<p style="margin: 0px; text-indent: 0px;">&gt; Hi List,</p>
<p style="margin: 0px; text-indent: 0px;">&gt;</p>
<p style="margin: 0px; text-indent: 0px;">&gt; I recently needed a ring structure (circular list with bi-directional</p>
<p style="margin: 0px; text-indent: 0px;">&gt; access) and didn&#39;t see anything obvious on Hackage. I threw something</p>
<p style="margin: 0px; text-indent: 0px;">&gt; together fairly quickly and would like some feedback before tossing it on</p>
<p style="margin: 0px; text-indent: 0px;">&gt; Hackage.</p>
<p style="margin: 0px; text-indent: 0px;">&gt;</p>
<p style="margin: 0px; text-indent: 0px;">&gt; I&#39;d really appreciate if some one would:</p>
<p style="margin: 0px; text-indent: 0px;">&gt;</p>
</div><p style="margin: 0px; text-indent: 0px;">&gt;    1. make sure the code looks goodish (127 lines with full docs)</p>
<p style="margin: 0px; text-indent: 0px;"></p>
<p style="margin: 0px; text-indent: 0px;">I think &#39;left&#39; and &#39;right&#39; aren&#39;t the optimal names. But I can&#39;t think of something clearly better either. The same applies to &#39;remove&#39;.</p>
<p style="margin: 0px; text-indent: 0px;"></p>
<p style="margin: 0px; text-indent: 0px;">Please, flip the arguments in &#39;insert&#39;. While ring `insert` el or insert ring el may seem more natural (or not) and that argument order is nicer for foldl&#39;, consistency with the argument order of Data.List.insert, Data.Set.insert and Data.Map.insert seems far more important to me.</p>
</div></blockquote><div><br>Done.<br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div style="font-family: &#39;Sans Serif&#39;; font-size: 10pt; font-weight: 400; font-style: normal;">

<p style="margin: 0px; text-indent: 0px;"></p>
<p style="margin: 0px; text-indent: 0px;">&gt;    2. make sure my tests look saneish</p>
<p style="margin: 0px; text-indent: 0px;"></p>
<p style="margin: 0px; text-indent: 0px;">Sort of. The code is so short and clear that testing it at all may hint at paranoia.</p>
<p style="margin: 0px; text-indent: 0px;">Jokes aside, prop_balance is a consequence of prop_list </p>
<p style="margin: 0px; text-indent: 0px;">(toList . balance . fromList === toList . fromList . toList . fromList;</p>
<p style="margin: 0px; text-indent: 0px;">toList . fromList === id ==&gt; toList . fromList . toList . fromList === id).</p>
<p style="margin: 0px; text-indent: 0px;"></p>
<p style="margin: 0px; text-indent: 0px;"><a name="125e460fec43872c_LC45"></a><span>p</span><span>rop_isEmpty</span><span> :: [Int] -&gt; Bool</span></p>
<pre style="margin: 0px; text-indent: 0px;"><a name="125e460fec43872c_LC46"></a>prop_isEmpty [] = True == (isEmpty . fromList $ []) </pre>
<pre style="margin: 0px; text-indent: 0px;"><a name="125e460fec43872c_LC47"></a>prop_isEmpty l  = False == (isEmpty . fromList $ l)</pre>
<pre style="margin: 0px; text-indent: 0px;"></pre>
<pre style="margin: 0px; text-indent: 0px;">prop_isEmpty [] = isEmpty . fromList $ []</pre>
<pre style="margin: 0px; text-indent: 0px;">prop_isEmpty l  = not . isEmpty . fromList $ l</pre>
<pre style="margin: 0px; text-indent: 0px;"></pre>
<pre style="margin: 0px; text-indent: 0px;"><span style="font-family: &#39;arial&#39;;">or</span></pre>
<pre style="margin: 0px; text-indent: 0px; font-family: &#39;arial&#39;;"></pre>
<pre style="margin: 0px; text-indent: 0px; font-family: &#39;arial&#39;;"><span style="font-family: &#39;courier new&#39;;">prop_isEmpty l = null l == isEmpty (fromList l)</span></pre><div class="im">
<pre style="margin: 0px; text-indent: 0px; font-family: &#39;courier new&#39;;"></pre>
<p style="margin: 0px; text-indent: 0px;"></p><br></div></div></blockquote></div><br>Agreed. I actually dislike all the tests... this is actually the first package I&#39;ve used QuickCheck to test with. I&#39;m most likely going to redo the test set shortly. I&#39;ll take this advice.<br>
<br>Thanks again.<br><br>/jve<br>