Код Ревью

Сравни свои решения

    Applicative evaluation  - will pass parameters and evaluate 0 then (p) and last test
Normal evaluation - will pass parameters without evaluation and returns 0