If you can allow your takes
function to do the conversion itself, it'll work:
def takes(f: Function1[String, Int])(
implicit f2pf: Function1[String,Int] => PimpedFunction[String,Int]
) = f2pf(f).foo
(you can overload takes
to take either a PF or a regular function).