<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Sun, Feb 18, 2018 at 9:17 AM, Ivan Perez <span dir="ltr"><<a href="mailto:ivanperezdominguez@gmail.com" target="_blank">ivanperezdominguez@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div>Hi<span class="gmail-"><br><br>> However, unless you have a strong reason to use arrowized FRP I would recommend that you go with one of the first-class FRP libraries. <br><br></span></div><div>TL;DR: Shameless self promotion ahead: we built an elementary library that seems to subsume many others, including AFRP and Classic FRP libraries, I'd like to know how it compares.<br><br></div><div>Seeing what's just been said about netwire, I'd like to ask how these compare to each other. Among themselves, and also in relation to a separate construct that Manuel Bärenz and I built (note: I am the Yampa maintainer; Yampa is alive and well and more updates are coming your way :) ).<br></div><div><br></div>In 2016 we published an article [1; mirror: 4] and a library [2] which aim at merging ideas in this field. I always thought they were pretty powerful, and so far I haven't found many limitations. (But I am biased, so maybe not the ideal judge.)<br><br>It combines the CPS-based arrowized construct of Yampa with a monad, in a tiny definition:<br><br></div>newtype MSF m a b = MSF { step :: a -> m (b, MSF m a b) }<br></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></blockquote><div><br></div><div>I believe this is exactly what a `Wire` is from the `wires` library:</div><div><br></div><div><a href="https://github.com/esoeylemez/wires/blob/master/Control/Wire/Internal.hs#L89">https://github.com/esoeylemez/wires/blob/master/Control/Wire/Internal.hs#L89</a></div><div><br></div><div>Ollie</div></div><br></div></div>