Pregunta

Estoy tratando de ingresar a la comunidad Clojure. He estado trabajando mucho con Python, y una de las características que uso ampliamente es el método zip (), para iterar sobre pares de valores. ¿Hay una manera (inteligente y corta) de lograr lo mismo en Clojure?

¿Fue útil?

Solución

Otra forma es simplemente usar map junto con alguna función que recopile sus argumentos en una secuencia, como esta:

user=> (map vector '(1 2 3) "abc")
([1 \a] [2 \b] [3 \c])

Otros consejos

(zipmap [:a :b :c] (range 3))
-> {:c 2, :b 1, :a 0}

La iteración sobre los mapas ocurre en pares, p. de esta manera:

(doseq [[k v] (zipmap [:a :b :c] (range 3))]
  (printf "key: %s, value: %s\n" k v))

impresiones:

key: :c, value: 2
key: :b, value: 1
key: :a, value: 0

La pregunta ha sido respondida, pero todavía hay interleave , que también maneja un número arbitrario de secuencias, pero no agrupa la secuencia resultante en tuplas (pero puede usar la partición para eso).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top