隣り合う二項の差をArrowを交えて
takkan_mのNo planな日常 - 隣り合う二項の差 どう書く?orgを書いた後、計算したい2値のタプルのリストをつくって回したいと思っていたら、nobsunさんのSコンビネーターでの実装におぉっと思ったので、似たようなのをArrowを使って書いた。
import Control.Arrow f = ( tail &&& id ) >>> (uncurry zip ) diff xs = map (uncurry (-)) $ f xs
うーん。xsがどうしても消せなかった。
YだとかSだとか、コンビネーターって全然知らないんだよなぁ。
追記:歯磨きしていてうかんだ
diff2 = ( tail &&& id ) >>> (uncurry zip ) >>> ( map (uncurry (-)))
さらに追記:zipWith使えばよかった
diff3 = ( tail &&& id ) >>> (uncurry $zipWith (-))