From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from majordomo@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id QAA23156; Wed, 28 Aug 2002 16:50:24 +0200 (MET DST) X-Authentication-Warning: pauillac.inria.fr: majordomo set sender to owner-caml-list@pauillac.inria.fr using -f Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id QAA23337 for ; Wed, 28 Aug 2002 16:50:23 +0200 (MET DST) Received: from mail1.tpgi.com.au (mail.tpgi.com.au [203.12.160.57]) by concorde.inria.fr (8.11.1/8.11.1) with ESMTP id g7SEoLX24132 for ; Wed, 28 Aug 2002 16:50:22 +0200 (MET DST) Received: from ozemail.com.au (syd-ts15-2600-187.tpgi.com.au [203.213.83.187]) (authenticated (0 bits)) by mail1.tpgi.com.au (8.11.6/8.11.6) with ESMTP id g7SEoCl13310; Thu, 29 Aug 2002 00:50:13 +1000 Message-ID: <3D6CE324.70301@ozemail.com.au> Date: Thu, 29 Aug 2002 00:50:12 +1000 From: John Max Skaller User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.2.1) Gecko/20010901 X-Accept-Language: en-us MIME-Version: 1.0 To: Diego Olivier Fernandez Pons CC: caml-list@inria.fr Subject: Re: Polymorphic recursion 9Was Re: [Caml-list] Doubly-linked list) References: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk Diego Olivier Fernandez Pons wrote: > John Max Skaller a écrit : > > >>I'm confused. I think you mean *type inference* is difficult >>if you want polymorphic recursion? >> > > I'am confused too. We do want type inference, do we not ? And > polymorphic recursion makes type inference undecidable. I thought type inference was already of such worst case complexity that it is effectively equivalent to undecidable :-) In practice, this is rarely a problem I believe. In any case, I'd rather more generality than a guarrantee of type inference: annotating function arguments when necessary isn't that onerous is it? > - Haskell allows full polymorphic recursion but requires providing > explicitly a type signature (in fact, in Haskell you always provide > type annotations even if it is not required) Felix requires annotation too, because it also provides overloading (and therefore it is often necessary). This definitely makes function signatures more difficult to write, but it allows more intuitive calling. Felix is lower order (less emphasis on higher order things) than Ocaml, so it is surprising that these higher order things are actually *easier* to support in the compiler (bottom up deduction is efficient, but it gets quite nasty with overloading added in .. sometimes return types have to be declared too) It seems the advantages of full inference lessen both as one tries for a lower order language (like Felix) or a higher order language (like Haskell): inference is maximally useful 'in between'. Most Ocaml programs do live 'in between', but there is another fact: annotating functions 'in between' is not much of a burden. So we gain most advantage from type inference for a small class of functions whose types are moderately complex: those of less complexity are easy to annotate, and those of more complexity cannot be easily annotated OR computed. I wonder if it is possible to find out how popular this class of functions is in actual usage? Can we see some cases where inference provides a definitive advantage? [I have seen some before .. they certainly exist] -- John Max Skaller, mailto:skaller@ozemail.com.au snail:10/1 Toxteth Rd, Glebe, NSW 2037, Australia. voice:61-2-9660-0850 ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners