Am 12.09.2014 um 11:42 schrieb Alois Cochard: > The only thing I can tell you is that I use Arrow a lot to map element of a > tuple, and that is really neat (took me a while though to get the signature > of the method and map to the instance defined). > > Basically: > f *** g = \(a, b) -> (f a, g a) > > Now that I got this one, I can see the more general abstraction and that > looks extremely powerful.
This means using (***) for the instance Arrow (->), which is not really spectacular. If you want to abstract at all, the Bifunctor class might be closer. I have the (***) as mapPair in my utility library: http://hackage.haskell.org/package/utility-ht-0.0.10/docs/Data-Tuple-HT.html A much more interesting application of Arrows is this: You can express causal audio signal processors using Arrows. Fortunately the Arrow combinators preserve causality. If you use feedback, a causal signal processor warrants that there are no deadlocks. A causal signal processor is also required for real-time processing. See for instance: http://arxiv.org/abs/1004.4796 http://haskell.cs.yale.edu/?post_type=publication&p=573 http://www.haskell.org/haskellwiki/Causal_Commutative_Arrows -- Read the whole topic here: Haskell Art: http://lurk.org/r/topic/5Hdhs1i3KTvq2DDavuexeW To leave Haskell Art, email haskell-...@group.lurk.org with the following email subject: unsubscribe