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

Pierre Fenoll pierrefenoll@REDACTED
Fri Nov 20 21:46:29 CET 2015


Dmitry is on point. 

1. Remove the useless braces around not is_tuple...
2. Add braces around ?IS_INDEX...

If that fixes it, think about moving the braces inside the macro's definition. 

> On 20 Nov 2015, at 16:03, Dmitry Kolesnikov <dmkolesnikov@REDACTED> wrote:
> 
> 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
> 
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions



More information about the erlang-questions mailing list