функция zipWith в Haskell
ghci> zipWith' (zipWith' (*)) [[1,2,3],[3,5,6],[2,3,4]] [[3,2,2],[3,4,5],[5,4,3]]
Функция zipWith 'use function' * ' и параметры после нее, чтобы получить возврат.Но в этом случае,как функция zipWith ' получить результат [[3,4,6],[9,20,30],[10,12,12]] .
Пример кода с использованием zipWith был взят дословно из бесплатной онлайн-книгиLearn You a Haskell for Great Good .
1 ответ:
zipWithвызывает данную функцию попарно для каждого члена обоих списков. Итак,zipWith f [a,b,c] [x,y,z]вычисляется как[f a x, f b y, f c z]. В этом случаеfявляетсяzipWith (*)и элементы списков снова являются списками, поэтому вы получаете:Теперь внутренние вызовы[ zipWith (*) [1,2,3] [3,2,2], zipWith (*) [3,5,6] [3,4,5], zipWith (*) [2,3,4] [5,4,3] ]zipWithумножают попарно элементы внутренних списков, так что получается:[ [3,4,6], [9,20,30], [10,12,12] ]
Comments