等差数列
目標
配列の隣接する2項にそれぞれ演算を施した配列を得たい。つまり、
f (+) [1,2,3,4,5] = [3,5,7,9]
のような f が欲しい。
結果
OCaml はオワコンだった
(こうすればうまく書けるよ、というのがあれば教えてください)
愚直(Haskell)
f g [] = [] f g [_] = [] f g (x:y:zs) = g x y : f g (y:zs)
Haskell
f g x = zipWith g x (tail x)
F#
let uncurry g (a, b) = g a b let f g x = Seq.map (uncurry g) (Seq.pairwise x)
Ruby(無理やり)
def f(x, &b) x[0..-2].zip(x.drop(1)).map { |y, z| b.call(y, z) } end