title: Implementing implication logical operator in scala
body: <p>I was wondering if there is any possibility to implement a logical implication in scala.
  For example:</p>
  
  <pre><code>a implies b
  </code></pre>
  
  <p>translating into:</p>
  
  <pre><code>!a || b
  </code></pre>
  
  <p>where <code>a</code> and <code>b</code> are some expressions that evaluate to <code>Boolean</code>.</p>
  
  <p>I initially started with following, but that is a wrong approach</p>
  
  <pre><code>  implicit def extendedBoolean(a : Boolean) = new {
      def implies(b : Boolean) = {
        !a || b
      }
    }
  </code></pre>
  
  <p>since it will evaluate both <code>a</code> and <code>b</code> regardless the value of <code>a</code>. The correct solution would only evaluate <code>b</code> when <code>a</code> is true.</p>