Hi &amp; thanks for your answers Manuel,<br><br><div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Using your idea of separating the lattice and conversion from the<br>
 definition of multiplication, you can at least save yourself the class<br> instances:</blockquote><div><br>Ok<br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
&nbsp; type family Join a b :: *</blockquote><div><br>Aah, meet and join but of course - memory memory memory seems<br>to get easily corrupted... :)<br><br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
is more flexible, as I am sure there are other applications, where we<br> don&#39;t want a lattice, but some other structure.</blockquote><div><br>Yes, and then there can be cases where we don&#39;t know exactly, what we want<br>
or there are situations where two almost but not identical structures are needed.<br><br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
&nbsp;&nbsp; <a href="http://www.cse.unsw.edu.au/~pls/thesis/aja-thesis.pdf">http://www.cse.unsw.edu.au/~pls/thesis/aja-thesis.pdf</a><br></blockquote></div><br>Thanks again! I&#39;ll try to read it quite soon.<br clear="all"><br>-- <br>
br,<br>Isto