caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Erik de Castro Lopo <ocaml-erikd@mega-nerd.com>
To: caml-list@yquem.inria.fr
Subject: Re: [Caml-list] Reporting on sucess/failure of tail recursion
Date: Fri, 2 Dec 2005 21:16:27 +1100	[thread overview]
Message-ID: <20051202211627.128cbfc5.ocaml-erikd@mega-nerd.com> (raw)
In-Reply-To: <55541.132.166.133.216.1133515788.squirrel@panel.lost-oasis.net>

basile@starynkevitch.net wrote:

> Functions are not tail-recursive, but function *calls* are (or not)
> tail-recursive. I mean that a given function may have both tail
> [-recursive]
> and non-tail [-recursive] calls.

Ok, so many recursive functions are actually written like:

    let fact n =
        let rec sub_fact curr acc =
            if curr > n then acc
            else sub_fact (curr + 1) (curr * acc)
        in
        sub_fact 1 1

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.
	
> Maybe what you are dreaming of is an extension of the -dtypes flag (to
> ocamlc)

Ooo, I didn't know about -dtypes. That might be useful. Thanks.

Yes, something like -dtypes.

Erik
-- 
+-----------------------------------------------------------+
  Erik de Castro Lopo
+-----------------------------------------------------------+
"That being done, all you have to do next is call free() slightly 
less often than malloc(). You may want to examine the Solaris 
system libraries for a particularly ambitious implementation of 
this technique."
-- Eric O'Dell (comp.lang.dylan)


  reply	other threads:[~2005-12-02 10:16 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 [this message]
2005-12-02 15:17     ` Jean-Christophe Filliatre
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=20051202211627.128cbfc5.ocaml-erikd@mega-nerd.com \
    --to=ocaml-erikd@mega-nerd.com \
    --cc=caml-list@yquem.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).