Esta función de transposición matricial funciona, pero estoy intentando comprender su ejecución paso a paso y no la entiendo.Comprender esta función de transposición de matrices en Haskell
transpose:: [[a]]->[[a]]
transpose ([]:_) = []
transpose x = (map head x) : transpose (map tail x)
con
transpose [[1,2,3],[4,5,6],[7,8,9]]
que devuelve:
[[1,4,7],[2,5,8],[3,6,9]]
No entiendo cómo el operador de concatenación está trabajando con el mapa. ¿Concatena cada cabeza de x en la misma llamada de función? ¿Cómo?
es este
(map head x)
creación de una lista de los elementos centrales de cada lista? mirada
Esto no es Es una respuesta, pero generalmente cuando estoy tratando de entender algo en Haskell, voy a pasar un tiempo jugando con él en GHCi. Pruebe "map head" o "map tail" en algunas listas de listas y verá cómo funcionan. Si vienes de un mundo imperativo, los mapas y los pliegues pueden ser un poco difíciles de asimilar. Son tus constructos principales de bucle, esencialmente reemplazando "por" y "mientras", por lo que pronto aprenderás a amarlos. – rtperson
+1 Grok (blahh) –