Some nits to pick, on the Haskell:<p><pre><code>    &gt; No exceptions
    &gt; 
    &gt; Exceptions are also a side effect handled by the type 
    &gt; system. We know our function is pure and won’t throw
    &gt; an exception.
</code></pre>
This isn&#x27;t the case for Haskell.<p><pre><code>    &gt; The input can either be true or false. Once you have 
    &gt; tested the result of these two possibilities, you
    &gt; have the holy grail. No exceptions, no infinite
    &gt; loops, no incorrect results, no errors.
</code></pre>
Almost.  The input can also be bottom (a thunk that, when forced, loops infinitely or raises an exception).  In that case, if the function tries to inspect the input then the function will also be a thunk that, when forced, loops infinitely or throws an exception.  If the function does <i>not</i> inspect its input, it may still return a value (e.g. `const True`).