After doing some pragmatic tests, it seems that neither the arrow preprocessor nor GHC's builtin one generate / optimize to the (***) combinator. For example,
p = proc (x,y) -> do x' <- f <- x y' <- g <- y return (x',y') is equivalent to p = f *** g But I have the impression this kind of rewrites is not being done? Is it possible to provide rewrite rules for arrows? Since *** is a method of the arrow type class, it might have a more optimal implementation. I haven't looked at the arrow preprocessor or GHC's code yet, but comments are welcome, I might see things wrongly. Cheers, Peter
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe