<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On 18 February 2018 at 11:36, Oliver Charles <span dir="ltr"><<a href="mailto:ollie@ocharles.org.uk" target="_blank">ollie@ocharles.org.uk</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span>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="m_-4303493993172971707m_1582243388700044980gmail-"><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></span><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" target="_blank">https://github.com/esoeylemez/<wbr>wires/blob/master/Control/Wire<wbr>/Internal.hs#L89</a></div><div><br></div><div>Ollie</div></div></div></div></blockquote><div><br><div>This is great to know :)<br></div><div><br>Given then that what I
said about classic FRP and many variants of FRP should apply to wires
too, how would programming in a classic FRP library be any different
from using Wires, Dunai, Varying, etc., all of which are based on the
same construct? (Performance aside.)<br><br></div><div>Ivan<br></div><div><br>[1] <a href="https://hackage.haskell.org/package/varying" target="_blank">https://hackage.haskell.org/<wbr>package/varying</a><br></div><div class="gmail_extra"><br></div> </div></div><br></div></div>