title: Can an implicit conversion of an implicit value satisfy an implicit parameter?
body: <p>I'm defining some Scala implicits to make working with a particular unchangeable set of Java classes easier. The following Scala code is a simplified example that obviously looks crazy, in the real world I'm trying to grab particular resources (rather than numeric age) implicitly from the Monkey, Tree &amp; Duck for use in various methods like <code>purchaseCandles()</code>:</p>
  
  <pre><code>// actually 3 Java classes I can not change:
  case class Monkey(bananas: Int) 
  case class Tree(rings: Int)
  case class Duck(quacks: Seq[String])
  
  // implicits I created to make my life easier...
  implicit def monkey2Age(monkey: Monkey): Int = monkey.bananas / 1000
  implicit def tree2Age(tree: Tree): Int = tree.rings
  implicit def duck2Age(duck: Duck): Int = duck.quacks.size / 100000
  
  // one of several helper methods that I would like to define only once,
  // only useful if they can use an implicit parameter.
  def purchaseCandles()(implicit age: Int) = {
    println(s"I'm going to buy $age candles!")
  }
  
  // examples of usage
  {
    implicit val guest = Monkey(10000)
  
    purchaseCandles()
  }
  
  {
    implicit val guest = Tree(50)
  
    purchaseCandles()
  }
  
  {
    implicit val guest = Duck(Seq("quack", "quack", "quack"))
  
    purchaseCandles()
  }
  </code></pre>
  
  <p>The compiler error, which occurs 3 times:</p>
  
  <pre><code>could not find implicit value for parameter age: Int 
  purchaseCandles()
                 ^
  </code></pre>
  
  <p>Leaving aside the many different ways in which this sample code is crazy, my real question is: can implicit conversions of implicit values satisfy implicit parameters in Scala?</p>