Mailing list for all users of the OCaml language and system.
 help / color / mirror / Atom feed
From: Jean-Christophe Filliatre <filliatr@lri.fr>
To: Erik de Castro Lopo <ocaml-erikd@mega-nerd.com>
Cc: caml-list@yquem.inria.fr
Subject: Re: [Caml-list] Reporting on sucess/failure of tail recursion
Date: Fri, 2 Dec 2005 16:17:26 +0100	[thread overview]
Message-ID: <17296.25990.261724.744405@gargle.gargle.HOWL> (raw)
In-Reply-To: <20051202211627.128cbfc5.ocaml-erikd@mega-nerd.com>


Erik de Castro Lopo writes:
 > with a no-recursive outer function and a tail recursive inner function.
 > It would still be nice to know if the inner function is tail recursive.

As  already explained by  Basile, the  right notion  is that  of "tail
call"  not of "tail  recursive function"  (you can  define it  as "all
recursive  calls  are tail  calls",  but  it  is less  precise).   For
instance, the following function
 
   let rec fold f s accu =
      match s with
        Empty -> accu
      | Node(l, v, r, _) -> fold f r (f v (fold f l accu))

has two recursive calls, one which is  not a tail call (fold f l accu)
and one which is (fold f r ...)

Being warned of non-tail calls may be useful in some situations, but I
guess the  issue is often the call  to a library function  that is not
tail recursive. That's  why you need the documentation  to be explicit
about that...

-- 
Jean-Christophe Filliâtre (http://www.lri.fr/~filliatr)


  reply	other threads:[~2005-12-02 15:18 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-12-02  9:09 Erik de Castro Lopo
2005-12-02  9:13 ` [Caml-list] " Jonathan Roewen
2005-12-02  9:25   ` Erik de Castro Lopo
2005-12-02  9:29 ` basile
2005-12-02 10:16   ` Erik de Castro Lopo
2005-12-02 15:17     ` Jean-Christophe Filliatre [this message]
2005-12-02 23:58       ` skaller
2005-12-02 10:45   ` David MENTRE
2005-12-03  0:28 David Thomas
2005-12-04  4:11 ` Andres Varon

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=17296.25990.261724.744405@gargle.gargle.HOWL \
    --to=filliatr@lri.fr \
    --cc=caml-list@yquem.inria.fr \
    --cc=ocaml-erikd@mega-nerd.com \
    /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