I have a function `foo` that takes a single argument whose implementation depends on the type of the argument, hence a protocol:

```
(defprotocol Foo
  (foo [x]))

```

On the same namespace, I also would like a function with the same name (`foo`) that takes variable arguments and that calls for each argument the single-arg `foo`. Something like:

```
(defn foo [x1 x2 & more]
  (doseq [x (concat [x1 x2] more)])
    (foo x))))

```

How to implement that?