Wither Self

Richard A. O'Keefe <>
Tue Sep 9 01:55:00 CEST 2003


Joe Armstrong <> wrote:
	    Shouldn't there be a Self in funs?
	
		Fac = fun(0) -> 1;	
			 (N) -> N*Self(N-1) end
	 
Well, if the compiler were just a touch smarter, you wouldn't need it.

If you have
    <pattern> = ... <fun> ...
then the check for unbound variables in <fun> should ask whether
any variable will still be unbound *after* the pattern is matched
instead of whether any variable is unbound *before* the pattern match.

Then you could just write

	Fac = fun(0) -> 1; N -> N * Fac(N-1) end,

without needing Self.  This would also handle mutual recursion:

    {Even, Odd} =
        {fun(0) -> true;  (N) -> Odd( N-1) end,
         fun(0) -> false; (N) -> Even(N-1) end},

which the Self proposal would not deal with at all.




More information about the erlang-questions mailing list