2007-06-20 filterA Haskell Arrow できた!けどめちゃくちゃだ。その場しのぎ的な感じがぷんぷんするぜー。 filterA p = arr listcase >>> arr (const []) ||| ((?x -> if p x then Left x else Right ()) *** filterA p >>> arr (uncurry cons)) cons (Left x) l = x:l cons (Right _) l = l Main> filterA (>0) [-3..3] [1,2,3] Main>