[erlang-questions] guard clause oddity, maybe bug (in my brain)?

Dmitry Kolesnikov dmkolesnikov@REDACTED
Fri Nov 20 16:03:01 CET 2015


Hello,

How does you macro IS_INDEX looks like?
e.g.

5> A = {1}.
{1}
6> (not is_tuple(A)) andalso is_number(A) orelse A > 1.
true

but

8> (not is_tuple(A)) andalso (is_number(A) orelse A > 1).
false


Best Regards, 
Dmitry


> On Nov 20, 2015, at 4:03 PM, jim rosenblum <jim.rosenblum@REDACTED> wrote:
> 
> I have a function:
> 
> walk ([I|Is], [Elt|_]=Ts) when (not is_tuple(Elt)) andalso ?IS_INDEX(I) ->
>    Element = index_to_element(I,Ts),
>    case 
>        ... snip ...
>    end.
> 
> This function clause gets executed even though Elt is a tuple. 
> 
> I have a break point within this function clause. I am looking at the 
> debugger at the break-point within the clause, and I can plainly see that Elt
> IS a tuple: within the debugger I can evaluate is_tuple(Elt) and it returns true,
> I can evaluate (not is_tuple(Elt)) and correctly get FALSE.
> 
> So.... how can I be in this clause when the guard evaluates to false?
> 
> Thoughts?
> 
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions




More information about the erlang-questions mailing list