proc-Notation für Arrows

{-# language Arrows #-}
addA :: Arrow a 
     => a b Int -> a b Int -> a b Int
addA f g = proc x -> do
        y <- f -< x ; z <- g -< x
        returnA -< y + z

wird übersetzt in entsprechende punktfreie Notation

addA f g = arr (\ x -> (x, x)) >>>
    first f >>> arr (\ (y, x) -> (x, y)) >>>
    first g >>> arr (\ (z, y) -> y + z)
...und ggf. weiter vereinfacht

http://www.haskell.org/arrows/syntax.html



Johannes Waldmann 2010-01-25