zip [1, 2] ['a', 'b'] = [(1, 'a'), (2, 'b')]If one input list is short, excess elements of the longer list are discarded:
zip [1] ['a', 'b'] = [(1, 'a')] zip [1, 2] ['a'] = [(1, 'a')]zip is right-lazy:
zip [] _|_ = [] zip _|_ [] = _|_zip is capable of list fusion, but it is restricted to its first list argument and its resulting list.
>>> zipWith (+) [1, 2, 3] [4, 5, 6] [5,7,9]zipWith is right-lazy:
zipWith f [] _|_ = []zipWith is capable of list fusion, but it is restricted to its first list argument and its resulting list.