[erlang-questions] chained functions

Richard O'Keefe ok@REDACTED
Fri Jan 27 04:54:56 CET 2012


There's always the possibility of
	eapp(F, E={error,_}) -> E;
	eapp(F, {ok,X}) -> F(X).

Then
	w(x(y(z(...))))
->
	eapp(fun w/1, eapp(fun x/1,
	eapp(fun y/1, eapp(fun z/1, ...))))
and of course this can be turned into a macro:
	-define(eapp(F,X),
	  case ?X of EC1 = {error,_} -> EC1
                   ; OC2 = {ok,OV2}  -> ?X(OV2)
	  end).

Sometimes throwing exceptions is a better choice.




More information about the erlang-questions mailing list