
On Tuesday 12 October 2010 4:02:06 pm Gregory Crosswhite wrote:
Hughes himself said that when your arrow is an instance of ArrowApply, you are better off just sticking with monads.
Well, this is not necessarily good advice. It is true that ArrowApply will preclude some sort of static analysis. But, this does not mean that you cannot do the static analysis on the pieces of code that *can* be written using less powerful arrow combinators. The same can be said about Applicative, Monad, etc. The combinators in the former could be implemented in ways that allow some extra analysis to be done, while those in the latter are still available when absolutely necessary. I believe the Utrecht parsing library does this, and encourages parsers to be written in applicative style as much as possible for this reason. If you have nothing like that to gain, though, it may make sense to jettison arrows due merely to syntactic considerations and the like, though. -- Dan