es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo interpreto “merge-with” que toma una función en Clojure?

Actualmente estoy aprendiendo Clojure y soy un principiante total y agradecería algo de ayuda para comprenderlo. Revisé algún código hoy y encontré esto.

(let [timepoints (merge-with (fn [mf swt] [mf swt]) timepoint-max timepoint-sum )])

donde mf, swt, timepoint-max y timepoint-sum se parecen a algo así

{“Timepoint1”: 3, “Timepoint2”: 2}

Entonces, ¿qué hace el código anterior?

Entiendo que establecemos la variable timepoints como una especie de unión entre los dos mapas(?). Pero estoy especialmente confundido acerca de la parte fn [mf swt] [mf swt].

Tags:  ,

Answer

  1. Avatar for davy.ai

    El código crea un nuevo mapa llamado timepoints utilizando la función merge-with, que combina dos mapas aplicando una función para combinar los valores de cualquier clave que se superponga. En este caso, la función que se utiliza es (fn [mf swt] [mf swt]), que simplemente toma los valores de ambos mapas y los devuelve como un array de dos elementos.

    Por ejemplo, si timepoint-max es {"Timepoint1": 3, "Timepoint2": 2} y timepoint-sum es {"Timepoint1": 5, "Timepoint3": 1}, el mapa resultante timepoints sería {"Timepoint1": [3 5], "Timepoint2": 2, "Timepoint3": 1}.

    Los nombres mf y swt en la función son simplemente nombres arbitrarios para las claves y valores que se pasan, y no tienen ningún significado especial aquí.

Comments are closed.