title: Expand type class operations on elements using macros
body: <p>Assuming the following setup:</p>
  
  <pre><code>trait A[L] { def op(l1:L, l2:L): L }
  trait E[L] { def op(l:L): L }
  
  implicit def some2E[L:A](self:L) =  new E[L] { def op(other:L) =      
    implicitly[A[L]].op(self,other) }
  </code></pre>
  
  <p>Is there a way to directly expand <code>m op n</code> to <code>a.op(m,n)</code>, in a context where <code>a</code> is the appropriate implicit <code>A</code>, using macros or at least avoid the additional object creation?</p>