@sig(H/ (H/ "a" >> "b" >> "c" >> "d" >> "e") >>
        ["a"] >> ["b"] >> ["c"] >> ["d"] >> ["e"])
def zipWith4(fn, a, b, c, d):
    """
    zipWith4 :: (a -> b -> c -> d -> e) -> [a] -> [b] -> [c] -> [d] -> [e]

    The zipWith4 function takes a function which combines four elements, as
    well as four lists and returns a list of their point-wise combination,
    analogous to zipWith.
    """
    return L[(fn(*s) for s in zip4(a, b, c, d))]
dataset/ETHPy150Open billpmurphy/hask/hask/Data/List.py/zipWith4/original