Anonymous user
Anonymous recursion: Difference between revisions
translated haskell to ocaml
No edit summary |
(translated haskell to ocaml) |
||
Line 744:
return 0;
}</lang>
=={{header|OCaml}}==
{{trans|Haskell}}
OCaml has two ways to use anonymous recursion. Both methods hide the 'anonymous' function from the containing module, however the first method is actually using a named function.
'''Named function:'''
We're defining a function 'real' which is only available from within the fib function.
<lang ocaml>let fib n =
let rec real = function
0 -> 1
| 1 -> 1
| n -> real (n-1) + real (n-2)
in
if n < 0 then
None
else
Some (real n)</lang>
'''Anonymous function:'''
This uses the 'fix' function to find the fixed point of the anonymous function.
<lang ocaml>let rec fix f x = f (fix f) x
let fib n =
if n < 0 then
None
else
Some (fix (fun f -> fun n -> if n <= 1 then 1 else f (n-1) + f (n-2)) n)</lang>
{{out}}
<pre># fib 8;;
- : int option = Some 34</pre>
=={{header|Perl}}==
|