ひさしぶりにArrowLoopをつかってみた
ひさしぶりにArrowLoopをつかってみました。大分忘れていたな、という。いや覚えていたけど。
import Control.Arrow lengthA xs = loop ((snd&&&fst>>>app)&&&lengthA') (xs,0) where lengthA' = snd>>>\f -> cond (null.fst)>>>snd ||| ((tail***(+)1)>>>f) cond f x = if f x then Left x else Right x
ファンクション倶楽部のニコ動をみてて、ArrowLoopがよく分からないみたいなコメントを目にしました。わかんないですよねー。でも、やりこんでみると結構なんとかなるもんです。