Tengo una duda respecto a este ejercicio:
bar xs = [ (x,y) | x <‑ xs, y <‑ xs, x == y ]de manera que la expresión (bar [1,2,1,3]) retorne [(1,1),(1,1),(2,2),(1,1),(1,1),(3,3)].
No logro ver como se pueden generar las parejas seguidas de (1,1).
Tengo una duda respecto a este ejercicio:
bar xs = [ (x,y) | x <‑ xs, y <‑ xs, x == y ]de manera que la expresión (bar [1,2,1,3]) retorne [(1,1),(1,1),(2,2),(1,1),(1,1),(3,3)].
Me autorespondo porque ya me explicaron:
El detalle que se me estaba escapando es que cuando se usa mas de una variable en una lista por compresión, entonces se van a generar todas las combinaciones de ambas listas. En este caso el que sean la misma lista me mareó y creí que se hacia una sola "pasada" por la lista donde x valia siempre lo mismo que y. Cuando aunque sean la misma lista, las iteraciones en cada una de ellas es independiente.