Y-combinator in Erlang
Hakan Millroth
hakanm@REDACTED
Tue Jan 7 21:00:19 CET 2003
Now you see why I used to argue that introducing funs etc into Erlang
would make life tougher for the average joe :-)
-- Hakan
On Tuesday, January 7, 2003, at 06:41 PM, Vladimir Sekissov wrote:
> Good day,
>
> I've surprisingly found Y-combinator very useful to solve practical
> problem of writing recursive anonymous functions in Erlang.
>
> Code were translated to Erlang from
> http://www.ece.uc.edu/~franco/C511/html/Scheme/ycomb.html.
>
>
> -module(lambda).
>
> -export([y/1, mk_fact/0]).
>
> %% Y-combinator itself
> y(X) ->
> F = fun (P) -> X(fun (Arg) -> (P(P))(Arg) end) end,
> F(F).
>
> %% Factorial example
> mk_fact() ->
> F =
> fun (FA) ->
> fun (N) ->
> if (N == 0) -> 1;
> true -> N * FA(N-1)
> end
> end
> end,
> y(F).
>
>
> From shell:
>
> 1> F = mk_fact().
> #Fun<lambda.3.115879927>
>
> 2> F(5).
> 120
>
> Best Regards,
> Vladimir Sekissov
More information about the erlang-questions
mailing list