Estoy seguro de que esta es una pregunta para principiantes en lisp, ya que estoy recién aprendiendo el idioma.Múltiples argumentos para mapcar
Tengo una función en clisp llamada count. Cuenta la cantidad de veces que aparece un átomo en una lista. Lo que me gustaría hacer es poder contar cuentas varias veces con diferentes parámetros, pero la misma lista para buscar. Por ejemplo, me gustaría contar el número de 'A
, 'B
y 'C
hipotéticamente en la lista. Tenía la esperanza de que pudiera hacer algo como esto:
(mapcar 'count '(A B C) myList)
que he descubierto que esto no funciona porque cada uno de los elementos en '(A B C)
se están emparejados con sólo uno de los elementos en miLista. ¿Cuál es la forma idiomática apropiada para aplicar una función con un parámetro de entrada adicional a cada elemento en una lista? Para aclarar más, me gustaría poder tomar '(A B C)
y '(A A B C C C)
como entrada y producir (2 1 3)
.
Eso es perfecto. Exactamente lo que estaba buscando. ¡Muchas gracias! Al leer esto ahora, veo que probablemente miré una docena de soluciones similares sin realmente entender qué estaba haciendo la función lambda. Ahora que veo la respuesta aplicada a mi problema específico, tiene mucho más sentido. –
¡Gracias por compartir el momento de la iluminación! Ahora es un buen momento para revisar [cierres] (http://letoverlambda.com/textmode.cl/guest/chap2.html). –