Wither Self (shortish)

Richard Carlsson <>
Wed Sep 10 18:51:40 CEST 2003


On Wed, 10 Sep 2003, Chris Pressey wrote:

> There are of course more ways to deal with it.  For example, factor
> everything that doesn't need to inherit bindings out of the fun, into
> utility functions.

Here's a nice way of combining funs and factoring:

	f(A,B,C) ->
		...
		F = fun (X, Y) -> h(X, Y, A, B, C) end,
		do_stuff(F).

	h(X, Y, A, B, C) ->
		...

	do_stuff(F) ->
	    P = ...,
	    Q = ...,
	    F(P, Q).

This way, the fun F has the right arity for the job (2, in this
case), and still carries all the extra info it needs (A, B, and C),
but you don't have to put all the code for the fun at the place
where you define it.

Don't know if this helps you, though. I tend to use this pattern
when I spawn processes:

	f(A, B, C) ->
	    Parent = self(),
	    Pid = spawn(fun () -> process(Parent, A, B, C) end),
	    ...

	process(Parent, A, B, C) ->
	    ...

  /Richard


Richard Carlsson ()   (This space intentionally left blank.)
E-mail: 	WWW: http://user.it.uu.se/~richardc/
 "Having users is like optimization: the wise course is to delay it."
   -- Paul Graham



More information about the erlang-questions mailing list