title: Is infix notation allowed in declarations of a parameterized type in Scala?
body: <p>I have been trying to understand the answers given to the question asked in <a href="https://stackoverflow.com/questions/4403906/is-it-possible-in-scala-to-force-the-caller-to-specify-a-type-parameter-for-a-po/6629984#6629984">this post</a>.</p>
  
  <p>The code below reproduces the solution proposed in the accepted answer.  </p>
  
  <pre><code>object Finder {
    def find[T &lt;: Node](name: String)(implicit e: T DefaultsTo Node): T = 
      doFind(name).asInstanceOf[T]
  }    
  
  sealed class DefaultsTo[A, B]
  trait LowPriorityDefaultsTo {
    implicit def overrideDefault[A,B] = new DefaultsTo[A,B]
  }
  object DefaultsTo extends LowPriorityDefaultsTo {
     implicit def default[B] = new DefaultsTo[B, B]
  }
  </code></pre>
  
  <p>I would understand it if the implicit were defined as </p>
  
  <pre><code>(implicit e:  DefaultsTo[T, Node])
  </code></pre>
  
  <p>But instead it is defined in something that looks like infix notation. I never knew that a type <code>DefaultsTo[T, Node]</code> could be written as <code>T DefaultsTo Node</code>. Is this what is going on?</p>