我正在尝试编写一个转换库,用于将一些 scala 类型转换为 HTML 表示。List(1,2).toHtml比如说,我想<ul><li>1</li><li>2</li></ul>以String. 
到目前为止,我已经编写了一组隐式转换,它们在检测结果类型和应用正确的toHtml.  
让我展示一个示例:
object Conversions {
  implicit def fromIterable[A](l : Iterable[A]) = new Object {
       def toHtml = <ul> { l.map{ e => <li>{ e }</li> } } </ul> toString
  }
}
import Conversions._
使用此代码,每当我询问编译器时,List(1,2).toHtml我都会得到正确的转换。就像任何其他Iterableval 一样。  
我的问题和问题是我如何递归地使用这个 toHtml 转换?因为如果我键入List( List(1,2), List(3,4) ).toHtml我想要得到<ul> <li><ul><li>1</li><li>2</li></ul></li> <li><ul><li>3</li><li>4</li></ul></li> </ul>的,toHtml转换会递归地应用于输入的每个元素Iterable。  
我试图将toHtml定义更改为def toHtml = <ul> { l.map{ e => <li>{ e.toHtml  }</li> } } </ul> toString不起作用,因为编译器告诉我value toHtml is not a member of type parameter A这是完全合理的。
我知道我的问题可能在于new Object { ... }我从fromIterable[A]隐式定义返回,这可能应该返回一个具有特征或其他东西的类。
我已经尝试阅读很多关于隐式的内容,但我还没有弄清楚能够递归地应用这种toHtml转换,而无需取消参数化 fromIterable 签名并定义几个特定情况,例如fromIterable(l : List[List[Any]])或类似的东西......  
你们能否请我给我一些关于如何实现它的建议以及我做错了什么?
谢谢!