<br><br><div class="gmail_quote">On Tue, Mar 15, 2011 at 9:42 PM, Isaac Dupree <span dir="ltr">&lt;<a href="mailto:ml@isaac.cedarswampstudios.org">ml@isaac.cedarswampstudios.org</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 class="im">On 03/15/11 16:18, Britt Anderson wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Or can I do something like<br>
<br>
instance Monoid MyDat where<br>
mempty = Mydat [] 0<br>
mappend a b = (Mydat (mappend (list1 a) (list1 b)) (item1 a))<br>
<br>
without defining an instance for Float?<br>
</blockquote>
<br></div>
Yes, you can do this.  Try it!  Does it typecheck?  Then there&#39;s a large chance it&#39;s correct!  (In addition to more-philosophical reasons.)<br><font color="#888888">
<br>
-Isaac</font></blockquote><div> </div><div>But in this case, it wouldn&#39;t really be correct, since mempty wouldn&#39;t be a <br>two-sided neutral element. With the above,<br><br>mempty `mappend` (MyDat [&quot;Foo&quot;] 1) = MyDat [&quot;Foo&quot;] 0<br>
<br>For correctness, you could use Data.Monoid.First or Data.Monoid.Last<br><br>data MyDat = MyDat [String] (First Float)<br><br>instance Monoid MyDat where<br>  mempty = MyDat mempty mempty<br>  (MyDat l1 i1) `mappend` (MyDat l1 i2) = <br>
              MyDat (l1 `mappend` l2) (i1 `mappend` i2) </div></div><br>