Так в работе над проектом Haskell, я в конечном итоге написание следующей функцииСуществует ли стандартное название для этой операции?
reGrid :: [[[a]]] -> [[a]]
reGrid [] = []
reGrid xs | any null xs = []
| otherwise = (concat $ map head xs) : reGrid (map tail xs)
Для тех, кто не говорит Haskell, это принимает список матриц, и объединяет соответствующие строки в новый матрица.
Его появление несколько раз в этом проекте, и я чувствую, что это какая-то общая операция, которую я пропустил.
Существует ли стандартное название для этой операции? Поиск Hoogle для
[[[a]]] -> [[a]
Не имеет ничего полезного.
Именно то, что я искал. Следует отметить, что ваше начальное значение должно быть списком списков, равным по длине входному списку, иначе он фактически не попадет ни в одну из строк, то есть 'let reGrid2 xs = foldr (zipWith (++))) (replicate (length xs) []) xs'. – user2085282
@ пользователь2085282, исправно, но по-разному. – dfeuer