caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: John Max Skaller <skaller@ozemail.com.au>
To: Diego Olivier Fernandez Pons
	<Diego-Olivier.FERNANDEZ-PONS@cicrp.jussieu.fr>
Cc: caml-list@inria.fr
Subject: Re: Polymorphic recursion 9Was Re: [Caml-list] Doubly-linked list)
Date: Thu, 29 Aug 2002 00:50:12 +1000	[thread overview]
Message-ID: <3D6CE324.70301@ozemail.com.au> (raw)
In-Reply-To: <Pine.A32.3.95.1020827143732.83860D-100000@ibm1.cicrp.jussieu.fr>

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


  reply	other threads:[~2002-08-28 14:50 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-08-13  8:00 [Caml-list] Doubly-linked list Oleg
2002-08-13  8:54 ` Markus Mottl
2002-08-13 15:52   ` Oleg
2002-08-13 11:00 ` Diego Olivier Fernandez Pons
2002-08-13 14:30   ` Oleg
2002-08-13 15:11     ` Anton Moscal
2002-08-13 16:12       ` Oleg
2002-08-13 17:16         ` Max Kirillov
2002-08-14  0:49           ` Max Kirillov
2002-08-13 18:23         ` Anton E. Moscal
2002-08-13 16:16   ` Brian Rogoff
2002-08-14  8:13     ` Diego Olivier Fernandez Pons
2002-08-14 15:43       ` Brian Rogoff
2002-08-19 10:38         ` Diego Olivier Fernandez Pons
2002-08-19 15:58           ` Polymorphic recursion 9Was Re: [Caml-list] Doubly-linked list) Brian Rogoff
2002-08-21  8:04             ` Diego Olivier Fernandez Pons
2002-08-21 15:48               ` Brian Rogoff
2002-08-23  8:14                 ` Diego Olivier Fernandez Pons
2002-08-23 21:57               ` John Max Skaller
2002-08-27 13:00                 ` Diego Olivier Fernandez Pons
2002-08-28 14:50                   ` John Max Skaller [this message]
2002-08-28 17:27                     ` [Caml-list] FELIX (was: Polymorphic recursion) Oleg
2002-08-19 23:17 ` [Caml-list] Doubly-linked list james woodyatt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3D6CE324.70301@ozemail.com.au \
    --to=skaller@ozemail.com.au \
    --cc=Diego-Olivier.FERNANDEZ-PONS@cicrp.jussieu.fr \
    --cc=caml-list@inria.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).