From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on yquem.inria.fr X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=disabled version=3.1.3 X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by yquem.inria.fr (Postfix) with ESMTP id 5E25DBC69 for ; Thu, 18 Oct 2007 21:55:30 +0200 (CEST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ao8CABBXF0fQccgFfWdsb2JhbACBW4xzAgkEBgIPEQc X-IronPort-AV: E=Sophos;i="4.21,297,1188770400"; d="scan'208";a="4770339" Received: from lax-green-bigip-5.dreamhost.com (HELO looneymail-a1.g.dreamhost.com) ([208.113.200.5]) by mail3-smtp-sop.national.inria.fr with ESMTP; 18 Oct 2007 21:55:29 +0200 Received: from carols-computer-3.local (c-69-180-180-182.hsd1.mn.comcast.net [69.180.180.182]) by looneymail-a1.g.dreamhost.com (Postfix) with ESMTP id E6F8615EBD5; Thu, 18 Oct 2007 12:55:27 -0700 (PDT) Message-ID: <4717BA2D.6000800@fischerventure.com> Date: Thu, 18 Oct 2007 14:55:25 -0500 From: Robert Fischer User-Agent: Thunderbird 2.0.0.6 (Macintosh/20070728) MIME-Version: 1.0 To: skaller Cc: Arnaud Spiwack , caml-list@yquem.inria.fr Subject: Re: [Caml-list] Smells like duck-typing References: <377673.31302.qm@web54602.mail.re2.yahoo.com> <47176B4A.5000807@janestcapital.com> <47176DB6.7090700@lix.polytechnique.fr> <471771A7.3010402@janestcapital.com> <47177585.6030208@lix.polytechnique.fr> <1192725564.5999.51.camel@rosella.wigram> <47178E8C.6020304@lix.polytechnique.fr> <1192729631.5999.103.camel@rosella.wigram> In-Reply-To: <1192729631.5999.103.camel@rosella.wigram> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Spam: no; 0.00; invariants:01 invariants:01 caml-list:01 define:02 defined:02 inheriting:02 derived:05 classes:08 fischer:10 interesting:12 methods:12 methods:12 happens:13 robert:13 robert:13 > But that never happens with mutators because you cannot > HAVE any additional invariants. The derived type has > to have exactly the same set of values as the base, > in which case you cannot have any new interesting > methods -- any method you have can always be defined > in terms of the characteristic methods already in > the base (assuming the whole public state is accessible > of course). > This is why you 1) define a base class which has a very loose set of invariants or 2) obscure state from inheriting classes. ~~ Robert.