Soy nuevo en Scala, ya que he tenido una experiencia muy limitada con la programación funcional a través de Haskell.Componer una lista de todos los pares
Me gustaría intentar componer una lista de todos los pares posibles construidos a partir de una sola lista de entrada. Ejemplo:
val nums = List[Int](1, 2, 3, 4, 5) // Create an input list
val pairs = composePairs(nums) // Function I'd like to create
// pairs == List[Int, Int]((1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (2, 1) ... etc)
me trató de usar zip
en cada elemento de la lista entera, con la esperanza de que duplicaría el único elemento en el conjunto. No funcionó (solo coincidió con el primer par posible). No estoy seguro de cómo repetir un elemento (Haskell lo hace con cycle
y take
Creo), y he tenido problemas para seguir la documentación en Scala.
Esto me deja pensando que probablemente haya una forma más concisa y funcional de obtener los resultados que quiero. ¿Alguien tiene una buena solución?
Es muy útil para aprender la terminología para la operación que desea realizar. En este caso, está tratando de encontrar el producto de la lista consigo mismo. Mira esto: http://stackoverflow.com/questions/8217764/cartesian-product-of-two-lists – Marcin
@Marcin Gracias. He descubierto que uno de los mayores obstáculos para aprender cualquier grado de programación funcional es aprender la nueva terminología. – KChaloux
producto cruzado? Lo mismo que el producto cartesiano? Si Spark es relevante aquí, entonces [esta respuesta] (http://stackoverflow.com/a/26565173/1175496) también es relevante –