Más rareza de Clojure. Tengo esta función que estoy tratando de definir y llamar. Tiene 3 argumentos, pero cuando lo llamo con 3 argumentos consigoObteniendo el número equivocado de args pasados a una función de Clojure
Wrong number of args (1) passed to: solr-query$correct-doc-in-results-QMARK-$fn
[Thrown class clojure.lang.ArityException]
cuando llamo con 2 argumentos consigo
Wrong number of args (2) passed to: solr-query$correct-doc-in-results-QMARK-
[Thrown class clojure.lang.ArityException]
y cuando lo llamo con 4 argumentos consigo
Wrong number of args (4) passed to: solr-query$correct-doc-in-results-QMARK-
[Thrown class clojure.lang.ArityException]
aquí es la definición de la función:
(defn correct-doc-in-results? [query results docid]
"Check if the docid we expected is returned in the results"
(some #(.equals docid) (map :id (get results query))))
y así es como estoy tratando de llamarlo (a partir del uso de Swank REPL en emacs):
(correct-doc-in-results? "FLASHLIGHT" all-queries "60184")
Alguien tiene alguna idea de lo que está pasando? ¿Por qué cree que solo estoy pasando 1 argumento cuando estoy pasando 3, pero lo hago bien para 2 o 4? Todavía no soy un programador de clojure muy fluido, pero definir una función es bastante básico.
Por supuesto. Gracias por la simple explicación. –
@Brian en realidad el error se debe a que la función anónima quiere cero argumentos (no tiene%) y está recibiendo uno cuando es llamado por 'some'. Por supuesto, si la función en realidad * fuera * llamada sin argumentos, entonces causaría otro error al tratar de llamar a '.equals' con un solo argumento. – amalloy
Tienes razón, voy a editar mi respuesta. –