<div>I said "theoratical", but not "mathematical" or "a scientific" theory. š<img src="cid:smile22" alt="" />š Meyer have built a quite coherent construction in comparison with other OOP langs.</div><div>š</div><div>BTW, when I started study haskell i had similar question: is it possible to add DbC to haskell? Does haskell need DbC?</div><div>For example, class invariants may be expressed in DbC construction (fmap id = id for Functior, for example).</div><div>š</div><div>02.01.2013, 02:41, "Mike Meyer" &lt;mwm@mired.org&gt;:</div><blockquote><p>MigMit &lt;<a href="mailto:miguelimo38@yandex.ru">miguelimo38@yandex.ru</a>&gt; wrote:</p><blockquote>On Jan 1, 2013, at 10:23 PM, îÉËÉÔÉΠìÅ× &lt;<a href="mailto:leon.v.nikitin@pravmail.ru">leon.v.nikitin@pravmail.ru</a>&gt;<br />wrote:<br /><blockquote>šEiffel, for my opinion, is a best OOP language. Meyer use a</blockquote>theoretical approach as it is possible in OOP.<br />Really? Because when I studied it I had a very different impression:<br />that behind this language there was no theory at all. And it's only<br />feature I remember that is not present in mainstream languages is it's<br />pre/postconditions system, which looked like an ugly hack for me.</blockquote><p>I agree with Leon. Of course, I learned it out of OOSC2, which provides the theory. When compared to "mainstream" OO languages like C++, Java or Python, it's on a much solider theoretical basis. šCompared to something like Scheme, Haskell or even Clojure, maybe not so much.<br /><br />On the other hand, one persons theory is another persons hack. The theory behind the pre/post conditions is "Design by Contract". The contracts are as important as the type signature, and show up in the auto-generated docs in eiffel systems. I found at least one attempt to add DbC features to Haskell. I'm not sold on it as a programming technique - the bugs it uncovers are as likely to be in the pre/post conditions as in the code.<br /><br /><br />-- <br />Sent from my Android tablet with K-9 Mail. Please excuse my swyping.</p></blockquote>