Browse thread
functions' recursive construction
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: | 2008-07-07 (20:25) |
From: | Jeremy Yallop <jeremy.yallop@e...> |
Subject: | Re: [Caml-list] functions' recursive construction |
Fabrice Marchant wrote: > On Wed, 23 May 2007 01:17:08 +0200 "Damien Lefortier" > <damien.lefortier@gmail.com> wrote: > >> I try to do a function f which takes one integer argument and >> returns a function g which returns its nth arguments. >> >> For example f 3 gives g with let g = fun x -> fun y -> fun z -> z >> ;; >> >> I tried to do that kind of f function. >> >> let rec f = function 1 -> fun x -> x | n -> fun _ -> f (n-1) ;; >> >> But it does not work, any idea ? > > Sometimes, trying to learn a bit more about OCaml, I dig into old > List topics. But here, outside Coq answer, I'm not sure to understand > the explanations about the original OCaml question. Please, is it > possible to write an OCaml function that would behave the way Damien > Lefortier wish ? (I think the answer is 'No') Could you shed light on > this ? Here's a rather simple way to do it by encoding all the mechanics in the integer argument rather than in "f". Like Jean-Christophe Filliatre in the original thread, I'll use a zero-based rather than a one-based encoding. let z v = v let s n _ = n let f n = n Now f z 0 => 0 and f (s (s (s z))) 0 1 2 3 => 3 and so on. Jeremy.