I have this small test function to reproduce my issue:
Normally I would expect this to output "not ok", but it gives an error. The AND operation does not stop after the first mismatch. Usualy in programming languages you would stop then and no further arguments will be evaluated.
I think that @Partyborn’s issue is a little subtler than that. In other programming languages, the computer will stop evaluating expressions as soon as it can determine if the whole expression is true or false. Thus the error would not occur because the computer would stop evaluating after the first argument was evaluated.
I wouldn’t exactly call this a bug. It is unpublished behavior that probably won’t be changed any time soon. However, feel free to report it directly to support.
The Airtable formula language is its own language. While many aspects are similar to other computer languages, it still has its differences, and those unexpected differences can trip is up.
Meanwhile, I not sure why it matters if all the parameters of an AND() function are always evaluated or not. It could have some performance impacts, but other than that, it is best to write formula such that the inputs will always be the correct type.
Im aware that lower does not accept and integer as parameter. It is just a simple example to reproduce the issue. Think of it that I am checking if it is an int in the first and condition. That is the usual way to do it in code. To me this seems like a bug.