title: Problems in using `DummyImplicit` (Scala)
body: <p>Consider the following program: </p>
  
  <pre><code>  class myClass {
      def property[T](name: Symbol)(f: T =&gt; Boolean): Unit = {
        // do something
      }
  
      def property1[T](name: Symbol)(f: T =&gt; List[Int]): Unit = {
        // do something
      }
    }
  
    object spamDataModel extends myClass {
      property[Int]('myBoolean) {
        x:Int=&gt; true
      }
    }
  </code></pre>
  
  <p>Suppose I want to change the name of the method <code>property1</code> to <code>property</code> whole keeping both of them. Due to type erasure this is not possible, unless I do some tricks. </p>
  
  <p>Wish suggestions from <a href="https://stackoverflow.com/questions/3422336/how-can-i-differentiate-between-def-fooaxs-a-and-def-fooa-bxs-a-b/3461734#3461734">here</a> I tried adding <code>DummyImplicit</code>s: </p>
  
  <pre><code>class myClass {
      def property[T](name: Symbol)(f: T =&gt; Boolean)(): Unit = {
        // do something
      }
  
      def property[T](name: Symbol)(f: T =&gt; List[Int])(implicit d: DummyImplicit): Unit = {
        // do something
      }
    }
  
    object spamDataModel extends myClass {
      property[Int]('myBoolean) {
        x:Int=&gt; true
      }
    }
  </code></pre>
  
  <p>But the moment that I add <code>DummyImplcit</code>s, it starts to have errors (the second program): </p>
  
  <pre><code>[error] /Users/i-danielk/ideaProjects/saul/saul-core/src/main/scala/edu/illinois/cs/cogcomp/saul/datamodel/DataModel.scala:261: ambiguous reference to overloaded definition,
  [error] both method property in class myClass of type (name: Symbol)(f: Int =&gt; List[Int])Unit
  [error] and  method property in class myClass of type (name: Symbol)(f: Int =&gt; Boolean)(implicit d1: DummyImplicit)Unit
  [error] match argument types (Symbol)
  [error]     property[Int]('myBoolean) {
  [error]             ^
  [warn] two warnings found
  [error] one error found
  </code></pre>