элементов короткого списка? или это правильнее по-другому делать?
раз zipWith, значит списки разных типов. Раз мы не знаем, какой из списков короче, то не знаем, какого типа требовать дефолт. Значит дефолт - результат операции g :: (a -> b -> c) -> c -> ([a] -> [b] -> [c]) g f d a b = zipWith f a b ++ replicate delta d where delta = abs (length a - length b) h :: (a -> b -> c) -> c -> ([a] -> [b] -> [c]) h _ d [] ys = replicate (length ys) d h _ d xs [] = replicate (length xs) d h f d (x:xs) (y:ys) = f x y : h f d xs ys
Обсуждают сегодня