Me gustaría hacer un método donde podría darle una lista de longitudes y devolvería todas las combinaciones de coordenadas cartesianas hasta esas longitudes. Más fácil de explicar con un ejemplo:Producto cartesiano anidado de Haskell listas
cart [2,5]
Prelude> [ [0,0],[0,1],[0,2],[0,3],[0,4],[1,0],[1,1],[1,2],[1,3],[1,4] ]
cart [2,2,2]
Prelude> [ [0,0,0],[0,0,1],[0,1,0],[0,1,1],[1,0,0],[1,0,1],[1,1,0],[1,1,1] ]
Una simple lista de comprensión no funcionará porque no sé cuánto tiempo las listas van a ser. Aunque me encanta la simplicidad de Haskell para muchos problemas, esta es una que podría escribir procedimentalmente (en C o algo así) en 5 minutos, ¡mientras que Haskell me da un aneurisma!
Una solución a este problema específico me ayudaría mucho; También me encantaría escuchar acerca de sus procesos de pensamiento al abordar cosas como esta.
Wow, gracias Kenny y Dave. Nunca pensé lanzar una llamada recursiva a la definición de comprensión de la lista, muy genial. La versión que usa map and fold es genial. Intento utilizar las funciones de orden superior cuando puedo pensar en una forma, ¡así que este es un gran ejemplo para estudiar! – cspyr0
, siempre que use funciones de orden superior, sepa que no debe ser críptico. y usar las funciones correctas para ayudarlo a llegar allí, 'secuencia 'es lo que necesita aquí. – yairchu
Gracias yairchu por la solución concisa y clara y por presentarme a hoogle. ¿Cómo hice algo sin esto? – cspyr0