From: Jason Hickey <jyh@cs.caltech.edu>
To: Alex Baretta <alex@barettadeit.com>
Cc: caml-list@inria.fr
Subject: Re: [Caml-list] Immediate recursive functions
Date: Thu, 17 Feb 2005 11:00:46 -0800 [thread overview]
Message-ID: <4214E9DE.8040107@cs.caltech.edu> (raw)
In-Reply-To: <4214B8F1.7010402@barettadeit.com>
Alex Baretta wrote:
> I sometimes feel the need for a mu operator. I'm thinking of something
> like the following:
>
> # (rec f x -> if x <= 0 then 1 else x * (f (pred x))) 5
> - : int = 120
...
> This is not really a feature wish so much a bit of insane curiosity. Is
> there any specific reason for not having this in the core language syntax?
I can't give any arguments why your specific syntax is not allowed. In
principle it isn't necessary, since a general fixpoint can be defined.
# let rec fix f x = f (fix f) x;;
val fix : (('a -> 'b) -> 'a -> 'b) -> 'a -> 'b = <fun>
# fix (fun f i -> if i = 0 then 1 else i * f (i - 1)) 10;;
- : int = 3628800
# fix (fun f i j -> if i = 0 then 1 else j * f (i - 1) j) 10 5;;
- : int = 9765625
The drawback is that (fix f x) is likely to be a bit more expensive to
evaluate than the let-rec version.
Jason
--
Jason Hickey http://www.cs.caltech.edu/~jyh
Caltech Computer Science Tel: 626-395-6568 FAX: 626-792-4257
next prev parent reply other threads:[~2005-02-17 18:58 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-02-17 15:32 Alex Baretta
2005-02-17 18:20 ` [Caml-list] " Marcin 'Qrczak' Kowalczyk
2005-02-17 19:00 ` Jason Hickey [this message]
2005-02-17 20:33 ` Alex Baretta
2005-02-17 19:18 ` Christian Szegedy
2005-02-17 20:36 ` Alex Baretta
2005-02-17 22:39 ` Camlp4 documentation (was: Immediate recursive functions) Martin Jambon
2005-02-17 23:30 ` [Caml-list] " Richard Jones
2005-02-17 23:51 ` Michael Walter
2005-02-18 0:51 ` Micha
2005-02-18 3:37 ` briand
2005-02-18 5:21 ` Oliver Bandel
2005-02-18 6:51 ` Johann Spies
2005-02-18 8:04 ` [Caml-list] Camlp4 documentation Alex Baretta
2005-02-18 8:54 ` Alex Cowie
2005-02-18 16:20 ` Camlp4 with traditional syntax (was: Camlp4 documentation) Hendrik Tews
2005-02-18 16:28 ` [Caml-list] " Alex Baretta
2005-02-18 22:36 ` Hendrik Tews
2005-02-21 12:28 ` Alex Baretta
2005-02-21 12:55 ` Bardur Arantsson
2005-02-21 15:22 ` [Caml-list] Camlp4 with traditional syntax Olivier Andrieu
2005-02-21 16:57 ` Bardur Arantsson
2005-02-18 18:43 ` [Caml-list] Camlp4 with traditional syntax (was: Camlp4 documentation) Martin Jambon
2005-02-18 22:41 ` Hendrik Tews
2005-02-22 10:29 ` Oliver Bandel
2005-02-22 23:32 ` Richard Jones
2005-02-23 0:01 ` Martin Jambon
2005-02-24 0:47 ` Oliver Bandel
2005-02-24 15:24 ` William D. Neumann
2005-02-18 8:14 ` [Caml-list] Camlp4 documentation (was: Immediate recursive functions) Robert M. Solovay
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=4214E9DE.8040107@cs.caltech.edu \
--to=jyh@cs.caltech.edu \
--cc=alex@barettadeit.com \
--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