10/02/01 06:06:12
スレリンク(tech板:516番)
# 2つの同じ要素数のリスト (Num a) => [a] を、
# 片方を1要素分横にずらして和を取りたいです。
# たとえば [1, 2, 3] と [7, 8, 9] であれば
# [1, 2, 3, 0] と [0, 7, 8, 9] の和です。
#
# 今は定義を素直に実装して次のようにやってます。
# shearAdd :: (Num a) => [a] -> [a] -> [a]
# shearAdd as bs = zipWith (+) (as ++ [0]) (0 : bs)
#
# もっと洗練された方法はあるでしょうか。
# たとえば (++) 演算子は左辺のリストの要素数が大きいと不利なので、
# これを改善できるとか。