EBFE
odnochlen
А не нарушает ли это концепцию ФП (функция получается грязной, результат для одного элемента зависит от другого)?.

Конечно нарушает
Но грязно в этом случае имхо скорее зависимость от logical expression evaluation order / ассоциативности. Обычно ожидается что “expr1 or/and/… expr2” <=> “expr2 or/and/… expr1” .

В официальной терминологии “чистота” - именно то, что я сказал.