関数型プログラミング言語Haskell Part11
■ このスレッドは過去ログ倉庫に格納されています
0516デフォルトの名無しさん
2010/01/31(日) 21:24:25片方を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)
もっと洗練された方法はあるでしょうか。
たとえば (++) 演算子は左辺のリストの要素数が大きいと不利なので、
これを改善できるとか。
■ このスレッドは過去ログ倉庫に格納されています