Эта функция транспонирования матриц работает, но я пытаюсь понять ее пошаговое выполнение, и я не понимаю.
transpose:: [[a]]->[[a]]
transpose ([]:_) = []
transpose x = (map head x) : transpose (map tail x)
с
transpose [[1,2,3],[4,5,6],[7,8,9]]
он возвращает:
[[1,4,7],[2,5,8],[3,6,9]]
Я не понимаю, как работает оператор конкатенации с картой. Это конкатенация каждой главы x в том же вызове функции? Как?
- это
(map head x)
создание списка элементов заголовка каждого списка?