When I am finally starting to get a handle on Monads I discovered Arrows and I am thrown back into confusion. At least that is how it feels. In my exploration of Haskell I have spent a good deal of time trying to completely grasp and understand Monads. I have read much about it and feel pretty good about my understanding of them now. I am no expert but I at least am no longer afraid when I see or read about them.
But then I came across Arrows. Arrows (from what I understand) are a further abstraction on top of Monads which are themselves abstractions. What does this mean? I don't know.
I encountered arrows when I was looking into using the Haskell XML Toolkit. I was able to get a sample working (which I am planning to write about soon) using the toolkit and Arrows but it felt like shooting a pistol in the dark.
When I post the sample I created I will try my best to describe what I understand about it but I feel like this is going to be a slow road before I get a grasp on Arrows.