[erlang-questions] How do I elegantly check many conditions?

Adam Kelly <>
Fri Mar 20 15:33:33 CET 2009


2009/3/20 ryeguy <>:
> Now I don't want to have a 5 level deep if or case statement, but what
> other options do I have? Splitting it into separate functions sounds
> like a good idea, but then I just have to check the return value of
> the functions in some sort of conditional and it's back to the
> original problem.

I've added this function to my libraries:

run_checks([]) -> ok;
run_checks([H|T]) when is_function(H, 0) ->
	case H() of
		ok    -> run_checks(T);
		Error -> Error
	end.

at which point the problem is simply

case run_checks([
              fun() ->check_email(Email) end,
              fun() ->check_username(Username) end,
              ... ]) of
      ok -> ...;
      {error, Reason} -> ...
end.

Adam.



More information about the erlang-questions mailing list