functional-arrow

Combinators that allow for a more functional/monadic style of Arrow programming

Latest on Hackage:0.0

This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow stackage.org to host generated Haddocks.

BSD-3-Clause licensed and maintained by Henning Thielemann

If you program with Arrows you have two choices: Use the plain Arrow combinators, that are cumbersome to use, or use special Arrow syntax, that is built into all Haskell compilers and is still not very functional programming style. The arrow syntax still forces you to introduce temporary names, that you would not need in a functional notation.

Where you would write things like

mix <<< (id &&& delay) <<< lowpass

using plain Arrow combinators, you can now write

lowpass >>>= \x ->
   mix <<< (listen x &&& (delay <<< listen x))

where the (>>>=) resembles the monadic bind and allows you for shared access to an arrow result. Thus it can be used like a let.