
Miguel Negrao
I mostly program audio related stuff and arrows seem perfect for defining audio synthesis (I already saw some attempts at this with Yampa).
If what you want to define is a monad, you should make it a monad. Arrows are there because of the limitations of monads. Monads, while being less general, are more expressive. If you find that what you want is an arrow, you usually want to make it an applicative functor as well. Applicative style combined with the Category class gives much more declarative descriptions of the same thing (and usually also with higher performance). This is something I wanted to cover in a later chapter in my tutorial, but yeah -- it's not finished yet. =)
I see a lot of similarities between arrows and the Faust audio synthesis languages (perhaps it’s the same core idea ?) http://faust.grame.fr/.
Yes, that looks like functional reactive programming. You can do that with Netwire for example. In fact the code samples can be translated almost 1:1 to Netwire. Greets, Ertugrul -- nightmare = unsafePerformIO (getWrongWife >>= sex) http://ertes.de/