Defino una función, que toma dos parámetros: mapa y una clave. La clave se hace referencia a partir de la descomposición de parámetros mapadefn vs. let respecto a la descomposición
(defn myfunc [{v k} k]
v)
cuando llamo:
(myfunc {:a 10} :a)
Sorprendentemente produce esperado resultado: 10
cosa similar en el let:
(let [{v k} {:a 10} k :a] v)
falla, porque k no está definido en momento, cuando se evalúa la primera parte
Mi pregunta es: ¿por qué la descomposición dentro de los parámetros de función se comporta de manera diferente en comparación con la descomposición en let expresiones?
Ahora la pregunta es, si tal diferencia tiene que ser considerada como un error o como una característica ... – aav
diría si uno sabe que la desestructuración ocurre dentro del cuerpo de la función, no es sorprendente, por lo tanto, no es un error. Pero creo que este hecho debería explicarse mejor en los lugares apropiados; si mal no recuerdo, la Alegría de Clojure, por ejemplo, no consigue entrar realmente en esto. – Paul
lo que es interesante (pero no sorprendente) que su voluntad no funcione: (defn myfunc [{v k} {k: k1}] v) – aav