Implicit functions with several parameters are allowed, that is:
implicit def it(path: String, category: String):Iterator[String] = ...
But can the Scala compiler do something useful with it? If not, why doesn't it complain?
Yes, the compiler can do something with it if you ask for such an implicit.
def f(implicit ev: (String, String) => Iterator[String]) = ...
A to B is equivalent to looking up implicit parameter of type A => B. So implicit conversions and implicit parameters are roughly the same thing under the hood.