[erlang-questions] (newbie) Using Functions as Guards in Erlang
Jachym Holecek
jachym.holecek@REDACTED
Fri Jun 13 13:19:42 CEST 2008
On Fri, 13 Jun 2008 11:43:54 +0200, Fuad Tabba <fuad@REDACTED>
wrote:
> Being able to use a function with a guard seems like it would be the most
> elegant solution.
It could be useful and I admit I don't understand why is that prohibited
(besides
"side effects and infinite loops in guards are Evil" to which one can
reply "the
compiler can refuse a guard function if it can't prove it to be safe").
Anyway,
I'm not a compiler expert, so maybe there's a good reason I'm missing.
> Any suggestions?
Maybe choose different data representation that allows you to pattern-match
node colour? Something along the lines of:
-record(rb_node, {
left, %% Left subtree. :: rb_node()
right, %% Right subtree. :: rb_node()
is_black, %% Red or black? :: bool()
data}). %% Contents. :: term()
Either that, or give up doing all the dispatch in function clauses; ie.
live
with having explicit 'case' statements (there's nothing wrong about them
after
all). Or restructure the code in different way, but it's hard to suggest
how
w/o seeing the rest of the module...
HTH,
-- Jachym
More information about the erlang-questions
mailing list