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)
next prev parent 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