Смотрите на Рациональное Сканирование Приложения (раньше назывался Watchfire). Не свободный, но имеет хороший UI, мертв мощный, генерирует отчеты (сделанный на заказ и против стандартных платформ соответствия, таких как Basel2), и я полагаю, что можно написать сценарий его в сборку CI.
Следует замкнуть накоротко, как и в других языках. В Prelude это определено так:
(&&) :: Bool -> Bool -> Bool
True && x = x
False && _ = False
Итак, если первый параметр имеет значение False, второй никогда не нужно оценивать.
Like Martin said, languages with lazy evaluation never evaluate anything that's value is not immediately needed. In a lazy language like Haskell, you get short circuiting for free. In most languages, the || and && and similar operators must be built specially into the language in order for them to short circuit evaluation. However, in Haskell, lazy evaluation makes this unnecessary. You could define a function that short circuits yourself even:
scircuit fb sb = if fb then fb else sb
This function will behave just like the logical 'or' operator. Here is how || is defined in Haskell:
True || _ = True
False || x = x
So, to give you the specific answer to your question, no. If the left hand side of the || is true, the right hand side is never evaluated. You can put two and two together for the other operators that 'short circuit'.
Ленивая оценка означает, что ничего не оценивается до тех пор, пока она действительно не понадобится.