https://en.wikipedia.org/w/index.php?action=history&feed=atom&title=Functional_reactive_programming Functional reactive programming - Revision history 2025-06-03T20:38:19Z Revision history for this page on the wiki MediaWiki 1.45.0-wmf.3 https://en.wikipedia.org/w/index.php?title=Functional_reactive_programming&diff=1249613665&oldid=prev 2ndjpeg: /* Implementations */ Added reference to Sodium 2024-10-05T21:31:45Z <p><span class="autocomment">Implementations: </span> Added reference to Sodium</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 21:31, 5 October 2024</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 47:</td> <td colspan="2" class="diff-lineno">Line 47:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* [[Flapjax]] is a behavior–event FRP implementation in [[JavaScript]].</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* [[Flapjax]] is a behavior–event FRP implementation in [[JavaScript]].</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* React is an [[OCaml]] module for functional reactive programming.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* React is an [[OCaml]] module for functional reactive programming.</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>* Sodium is a push FRP implementation independent of a specific [[user interface]] (UI) framework for several languages, such as [[Java (programming language)|Java]], [[TypeScript]], and [[C Sharp (programming language)|C#]].</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>* Sodium is a push FRP implementation independent of a specific [[user interface]] (UI) framework for several languages, such as [[Java (programming language)|Java]], [[TypeScript]], and [[C Sharp (programming language)|C#]].<ins style="font-weight: bold; text-decoration: none;">&lt;ref&gt;{{cite web |url=https://github.com/SodiumFRP/sodium |title=Sodium FRP Library on Github |access-date=October 5, 2024}}&lt;/ref&gt;</ins></div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Dunai is a fast implementation in Haskell using [[Monadic Stream Functions]] that supports Classic and Arrowized FRP.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Dunai is a fast implementation in Haskell using [[Monadic Stream Functions]] that supports Classic and Arrowized FRP.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* ObservableComputations, a cross-platform [[.NET]] implementation.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* ObservableComputations, a cross-platform [[.NET]] implementation.</div></td> </tr> <!-- diff cache key enwiki:diff:1.41:old-1237280557:rev-1249613665:wikidiff2=table:1.14.1:ff290eae --> </table> 2ndjpeg https://en.wikipedia.org/w/index.php?title=Functional_reactive_programming&diff=1237280557&oldid=prev Citation bot: Added doi-access. | Use this bot. Report bugs. | Suggested by Headbomb | Linked from Wikipedia:WikiProject_Academic_Journals/Journals_cited_by_Wikipedia/Sandbox2 | #UCB_webform_linked 499/1051 2024-07-29T00:58:54Z <p>Added doi-access. | <a href="/wiki/Wikipedia:UCB" class="mw-redirect" title="Wikipedia:UCB">Use this bot</a>. <a href="/wiki/Wikipedia:DBUG" class="mw-redirect" title="Wikipedia:DBUG">Report bugs</a>. | Suggested by Headbomb | Linked from Wikipedia:WikiProject_Academic_Journals/Journals_cited_by_Wikipedia/Sandbox2 | #UCB_webform_linked 499/1051</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 00:58, 29 July 2024</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 50:</td> <td colspan="2" class="diff-lineno">Line 50:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Dunai is a fast implementation in Haskell using [[Monadic Stream Functions]] that supports Classic and Arrowized FRP.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Dunai is a fast implementation in Haskell using [[Monadic Stream Functions]] that supports Classic and Arrowized FRP.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* ObservableComputations, a cross-platform [[.NET]] implementation.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* ObservableComputations, a cross-platform [[.NET]] implementation.</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>* Stella is an [[actor model]]-based reactive language that demonstrates a model of "actors" and "reactors" which aims to avoid the issues of combining imperative code with reactive code (by separating them in actors and reactors).&lt;ref name="stella"&gt;{{Citation |url=https://drops.dagstuhl.de/opus/volltexte/2020/13176/ |first1=Sam |last1=Van den Vonder |first2=Thierry |last2=Renaux |first3=Bjarno |last3=Oeyen |first4=Joeri |last4=De Koster |first5=Wolfgang |last5=De Meuter |contribution=Tackling the Awkward Squad for Reactive Programming: The Actor-Reactor Model |title=Leibniz International Proceedings in Informatics (LIPIcs) |volume=166 |year=2020 |pages=19:1–19:29 |doi=10.4230/LIPIcs.ECOOP.2020.19 |isbn=9783959771542 |s2cid=260445152}}&lt;/ref&gt; Actors are suitable for use in distributed reactive systems.&lt;ref name="stella2"&gt;{{Citation |url=https://programming-journal.org/2022/6/14/ |first1=Sam |last1=Van den Vonder |first2=Thierry |last2=Renaux |first3=Wolfgang |last3=De Meuter |contribution=Topology-Level Reactivity in Distributed Reactive Programs: Reactive Acquaintance Management using Flocks |title=The Art, Science, and Engineering of Programming |volume=6 |year=2022 |issue=3 |pages=14:1–14:36 |doi=10.22152/programming-journal.org/2022/6/14 |s2cid=246979565|doi-access=free |arxiv=2202.09228 }}&lt;/ref&gt;</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>* Stella is an [[actor model]]-based reactive language that demonstrates a model of "actors" and "reactors" which aims to avoid the issues of combining imperative code with reactive code (by separating them in actors and reactors).&lt;ref name="stella"&gt;{{Citation |url=https://drops.dagstuhl.de/opus/volltexte/2020/13176/ |first1=Sam |last1=Van den Vonder |first2=Thierry |last2=Renaux |first3=Bjarno |last3=Oeyen |first4=Joeri |last4=De Koster |first5=Wolfgang |last5=De Meuter |contribution=Tackling the Awkward Squad for Reactive Programming: The Actor-Reactor Model |title=Leibniz International Proceedings in Informatics (LIPIcs) |volume=166 |year=2020 |pages=19:1–19:29 |doi=10.4230/LIPIcs.ECOOP.2020.19<ins style="font-weight: bold; text-decoration: none;"> |doi-access=free</ins> |isbn=9783959771542 |s2cid=260445152}}&lt;/ref&gt; Actors are suitable for use in distributed reactive systems.&lt;ref name="stella2"&gt;{{Citation |url=https://programming-journal.org/2022/6/14/ |first1=Sam |last1=Van den Vonder |first2=Thierry |last2=Renaux |first3=Wolfgang |last3=De Meuter |contribution=Topology-Level Reactivity in Distributed Reactive Programs: Reactive Acquaintance Management using Flocks |title=The Art, Science, and Engineering of Programming |volume=6 |year=2022 |issue=3 |pages=14:1–14:36 |doi=10.22152/programming-journal.org/2022/6/14 |s2cid=246979565|doi-access=free |arxiv=2202.09228 }}&lt;/ref&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>*[[TidalCycles]] is a pure FRP domain specific language for musical pattern, embedded in the [[Haskell]] language.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>*[[TidalCycles]] is a pure FRP domain specific language for musical pattern, embedded in the [[Haskell]] language.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> </table> Citation bot https://en.wikipedia.org/w/index.php?title=Functional_reactive_programming&diff=1224096480&oldid=prev GreenC bot: Reformat 4 archive links. Wayback Medic 2.5 per WP:URLREQ#iaboterr 2024-05-16T06:37:24Z <p>Reformat 4 archive links. <a href="/wiki/User:GreenC/WaybackMedic_2.5" title="User:GreenC/WaybackMedic 2.5">Wayback Medic 2.5</a> per <a href="/wiki/Wikipedia:URLREQ#iaboterr" class="mw-redirect" title="Wikipedia:URLREQ">WP:URLREQ#iaboterr</a></p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 06:37, 16 May 2024</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 18:</td> <td colspan="2" class="diff-lineno">Line 18:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Discrete ===</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Discrete ===</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Formulations such as Event-Driven FRP and versions of [[Elm (programming language)|Elm]] prior to 0.17 require that updates are discrete and event-driven.&lt;ref&gt;{{Citation |first1=Walid |last1=Taha |first2=Zhanyong |last2=Wan |first3=Paul |last3=Hudak |url=http://www.cs.yale.edu/homes/zwan/papers/mcu/efrp.pdf |contribution=Event-Driven FRP |title=PADL |year=2002 |publisher=Yale |access-date=2013-09-23 |archive-url=https://web.archive.org/web/20130928163653/http://www.cs.yale.edu/homes/zwan/papers/mcu/efrp.pdf |archive-date=2013-09-28 |url-status=<del style="font-weight: bold; text-decoration: none;">deviated |archivedate=2013-09-28 |archiveurl=https://web.archive.org/web/20130928163653/http://www.cs.yale.edu/homes/zwan/papers/mcu/efrp.pdf</del> }}&lt;/ref&gt; These formulations have pushed for practical FRP, focusing on semantics that have a simple API that can be implemented efficiently in a setting such as robotics or in a web-browser.&lt;ref&gt;{{Citation |first1=Evan |last1=Czaplicki |first2=Stephen |last2=Chong |publisher=Harvard |contribution-url=http://people.seas.harvard.edu/~chong/abstracts/CzaplickiC13.html |contribution=Asynchronous Functional Reactive Programming for GUIs |title=PLDI |year=2013}}&lt;/ref&gt;</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Formulations such as Event-Driven FRP and versions of [[Elm (programming language)|Elm]] prior to 0.17 require that updates are discrete and event-driven.&lt;ref&gt;{{Citation |first1=Walid |last1=Taha |first2=Zhanyong |last2=Wan |first3=Paul |last3=Hudak |url=http://www.cs.yale.edu/homes/zwan/papers/mcu/efrp.pdf |contribution=Event-Driven FRP |title=PADL |year=2002 |publisher=Yale |access-date=2013-09-23 |archive-url=https://web.archive.org/web/20130928163653/http://www.cs.yale.edu/homes/zwan/papers/mcu/efrp.pdf |archive-date=2013-09-28 |url-status=<ins style="font-weight: bold; text-decoration: none;">dead</ins> }}&lt;/ref&gt; These formulations have pushed for practical FRP, focusing on semantics that have a simple API that can be implemented efficiently in a setting such as robotics or in a web-browser.&lt;ref&gt;{{Citation |first1=Evan |last1=Czaplicki |first2=Stephen |last2=Chong |publisher=Harvard |contribution-url=http://people.seas.harvard.edu/~chong/abstracts/CzaplickiC13.html |contribution=Asynchronous Functional Reactive Programming for GUIs |title=PLDI |year=2013}}&lt;/ref&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>In these formulations, it is common that the ideas of behaviors and events are combined into signals that always have a current value, but change discretely.&lt;ref&gt;{{Citation |date=Feb 2011 |first1=Zhanyong |last1=Wan |first2=Walid |last2=Taha |first3=Paul |last3=Hudak |url=http://haskell.cs.yale.edu/wp-content/uploads/2011/02/rt-frp.pdf |contribution=Real-Time FRP |title=ICFP |number=1 |access-date=2013-09-23 |archive-url=https://web.archive.org/web/20130928163734/http://haskell.cs.yale.edu/wp-content/uploads/2011/02/rt-frp.pdf |archive-date=2013-09-28 |url-status=<del style="font-weight: bold; text-decoration: none;">deviated |archivedate=2013-09-28 |archiveurl=https://web.archive.org/web/20130928163734/http://haskell.cs.yale.edu/wp-content/uploads/2011/02/rt-frp.pdf</del> }}&lt;/ref&gt;</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>In these formulations, it is common that the ideas of behaviors and events are combined into signals that always have a current value, but change discretely.&lt;ref&gt;{{Citation |date=Feb 2011 |first1=Zhanyong |last1=Wan |first2=Walid |last2=Taha |first3=Paul |last3=Hudak |url=http://haskell.cs.yale.edu/wp-content/uploads/2011/02/rt-frp.pdf |contribution=Real-Time FRP |title=ICFP |number=1 |access-date=2013-09-23 |archive-url=https://web.archive.org/web/20130928163734/http://haskell.cs.yale.edu/wp-content/uploads/2011/02/rt-frp.pdf |archive-date=2013-09-28 |url-status=<ins style="font-weight: bold; text-decoration: none;">dead</ins> }}&lt;/ref&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Interactive FRP==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Interactive FRP==</div></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 26:</td> <td colspan="2" class="diff-lineno">Line 26:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>*Create a data structure of actions which appear as the outputs. The actions must be run by an external interpreter or environment. This inherits all of the difficulties of the original stream [[input/output]] (I/O) system of [[Haskell]].&lt;ref&gt;{{cite web |url=https://courses.cs.washington.edu/courses/cse505/01au/functional/functional-io.pdf |title=I/O in Purely Functional Languages |first=Alan |last=Borning |archive-url=https://web.archive.org/web/20220428171557/https://courses.cs.washington.edu/courses/cse505/01au/functional/functional-io.pdf |archive-date=2022-04-28 |url-status=live}}&lt;/ref&gt;</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>*Create a data structure of actions which appear as the outputs. The actions must be run by an external interpreter or environment. This inherits all of the difficulties of the original stream [[input/output]] (I/O) system of [[Haskell]].&lt;ref&gt;{{cite web |url=https://courses.cs.washington.edu/courses/cse505/01au/functional/functional-io.pdf |title=I/O in Purely Functional Languages |first=Alan |last=Borning |archive-url=https://web.archive.org/web/20220428171557/https://courses.cs.washington.edu/courses/cse505/01au/functional/functional-io.pdf |archive-date=2022-04-28 |url-status=live}}&lt;/ref&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>*Use Arrowized FRP and embed arrows which are capable of performing actions. The actions may also have identities, which allows them to maintain separate mutable stores for example. This is the approach taken by the Fudgets library&lt;ref&gt;{{Cite web|url=https://cth.altocumulus.org/~hallgren/Thesis/fudgets_thesis_color.pdf|title=Fudgets – Purely Functional Processes with applications to Graphical User Interfaces|first1=Magnus|last1=Carlsson|first2=Thomas|last2=Hallgren|year=1998|archive-url=https://web.archive.org/web/20221015141447/https://cth.altocumulus.org/~hallgren/Thesis/fudgets_thesis_color.pdf|archive-date=2022-10-15|url-status=live}}&lt;/ref&gt; and, more generally, Monadic Stream Functions.&lt;ref&gt;{{Citation |date=July 2016 |first1=Ivan |last1=Perez |first2=Manuel |last2=Barenz |first3=Henrik |last3=Nilsson |url=http://www.cs.nott.ac.uk/~psxip1/papers/2016-HaskellSymposium-Perez-Barenz-Nilsson-FRPRefactored-short.pdf |contribution=Functional Reactive Programming, Refactored |title=Haskell Symposium}}&lt;/ref&gt;</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>*Use Arrowized FRP and embed arrows which are capable of performing actions. The actions may also have identities, which allows them to maintain separate mutable stores for example. This is the approach taken by the Fudgets library&lt;ref&gt;{{Cite web|url=https://cth.altocumulus.org/~hallgren/Thesis/fudgets_thesis_color.pdf|title=Fudgets – Purely Functional Processes with applications to Graphical User Interfaces|first1=Magnus|last1=Carlsson|first2=Thomas|last2=Hallgren|year=1998|archive-url=https://web.archive.org/web/20221015141447/https://cth.altocumulus.org/~hallgren/Thesis/fudgets_thesis_color.pdf|archive-date=2022-10-15|url-status=live}}&lt;/ref&gt; and, more generally, Monadic Stream Functions.&lt;ref&gt;{{Citation |date=July 2016 |first1=Ivan |last1=Perez |first2=Manuel |last2=Barenz |first3=Henrik |last3=Nilsson |url=http://www.cs.nott.ac.uk/~psxip1/papers/2016-HaskellSymposium-Perez-Barenz-Nilsson-FRPRefactored-short.pdf |contribution=Functional Reactive Programming, Refactored |title=Haskell Symposium}}&lt;/ref&gt;</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>*The novel approach is to allow actions to be run now (in the IO monad) but defer the receipt of their results until later.&lt;ref&gt;{{Cite web |url=http://www.cse.chalmers.se/~atze/papers/prprfrp.pdf |title=Practical Principled FRP |author1=Atze van der Ploeg |first2=Koen |last2=Claessen |access-date=2015-07-24 |archive-url=https://web.archive.org/web/20150701030428/http://www.cse.chalmers.se/~atze/papers/prprfrp.pdf |archive-date=2015-07-01 |url-status=<del style="font-weight: bold; text-decoration: none;">deviated |archivedate=2015-07-01 |archiveurl=https://web.archive.org/web/20150701030428/http://www.cse.chalmers.se/~atze/papers/prprfrp.pdf</del> }}&lt;/ref&gt; This makes use of an interaction between the Event and IO monads, and is compatible with a more expression-oriented FRP:</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>*The novel approach is to allow actions to be run now (in the IO monad) but defer the receipt of their results until later.&lt;ref&gt;{{Cite web |url=http://www.cse.chalmers.se/~atze/papers/prprfrp.pdf |title=Practical Principled FRP |author1=Atze van der Ploeg |first2=Koen |last2=Claessen |access-date=2015-07-24 |archive-url=https://web.archive.org/web/20150701030428/http://www.cse.chalmers.se/~atze/papers/prprfrp.pdf |archive-date=2015-07-01 |url-status=<ins style="font-weight: bold; text-decoration: none;">dead</ins> }}&lt;/ref&gt; This makes use of an interaction between the Event and IO monads, and is compatible with a more expression-oriented FRP:</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{sxhl|2=elm|</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{sxhl|2=elm|</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> planNow :: Event (IO a) -&gt; IO (Event a)</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> planNow :: Event (IO a) -&gt; IO (Event a)</div></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 41:</td> <td colspan="2" class="diff-lineno">Line 41:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Implementations exist for many [[programming language]]s, including:</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Implementations exist for many [[programming language]]s, including:</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Yampa is an arrowized, efficient, pure [[Haskell]] implementation with SDL, SDL2, OpenGL and HTML DOM support.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Yampa is an arrowized, efficient, pure [[Haskell]] implementation with SDL, SDL2, OpenGL and HTML DOM support.</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>* The language [[Elm (programming language)|Elm]] used to support FRP&lt;ref&gt;{{Citation |first=Evan |last=Czaplicki |url=https://www.seas.harvard.edu/sites/default/files/files/archived/Czaplicki.pdf |title=Elm: Concurrent FRP for Functional GUIs |date=Apr 2012 |place=Harvard |type=thesis |access-date=2015-02-17 |archive-url=https://web.archive.org/web/20160604000246/http://www.seas.harvard.edu/sites/default/files/files/archived/Czaplicki.pdf |archive-date=2016-06-04 |url-status=<del style="font-weight: bold; text-decoration: none;">deviated |archivedate=2016-06-04 |archiveurl=https://web.archive.org/web/20160604000246/https://www.seas.harvard.edu/sites/default/files/files/archived/Czaplicki.pdf</del> }}&lt;/ref&gt; but has since replaced it with a different pattern.&lt;ref&gt;{{cite web |last1=Czaplicki |first1=Evan |title=A Farewell to FRP |url=http://elm-lang.org/blog/farewell-to-frp |website=elm |access-date=14 July 2018 |ref=farewell-to-frp}}&lt;/ref&gt;</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>* The language [[Elm (programming language)|Elm]] used to support FRP&lt;ref&gt;{{Citation |first=Evan |last=Czaplicki |url=https://www.seas.harvard.edu/sites/default/files/files/archived/Czaplicki.pdf |title=Elm: Concurrent FRP for Functional GUIs |date=Apr 2012 |place=Harvard |type=thesis |access-date=2015-02-17 |archive-url=https://web.archive.org/web/20160604000246/http://www.seas.harvard.edu/sites/default/files/files/archived/Czaplicki.pdf |archive-date=2016-06-04 |url-status=<ins style="font-weight: bold; text-decoration: none;">dead</ins> }}&lt;/ref&gt; but has since replaced it with a different pattern.&lt;ref&gt;{{cite web |last1=Czaplicki |first1=Evan |title=A Farewell to FRP |url=http://elm-lang.org/blog/farewell-to-frp |website=elm |access-date=14 July 2018 |ref=farewell-to-frp}}&lt;/ref&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* reflex is an efficient push–pull FRP implementation in Haskell with hosts for [[web browser]] – [[Document Object Model]] (DOM), [[Simple DirectMedia Layer]] (SDL), and Gloss.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* reflex is an efficient push–pull FRP implementation in Haskell with hosts for [[web browser]] – [[Document Object Model]] (DOM), [[Simple DirectMedia Layer]] (SDL), and Gloss.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* reactive-banana is a target-agnostic push FRP implementation in Haskell.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* reactive-banana is a target-agnostic push FRP implementation in Haskell.</div></td> </tr> </table> GreenC bot https://en.wikipedia.org/w/index.php?title=Functional_reactive_programming&diff=1223840001&oldid=prev InternetArchiveBot: Rescuing 4 sources and tagging 0 as dead.) #IABot (v2.0.9.5 2024-05-14T17:51:23Z <p>Rescuing 4 sources and tagging 0 as dead.) #IABot (v2.0.9.5</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 17:51, 14 May 2024</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 18:</td> <td colspan="2" class="diff-lineno">Line 18:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Discrete ===</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Discrete ===</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Formulations such as Event-Driven FRP and versions of [[Elm (programming language)|Elm]] prior to 0.17 require that updates are discrete and event-driven.&lt;ref&gt;{{Citation |first1=Walid |last1=Taha |first2=Zhanyong |last2=Wan |first3=Paul |last3=Hudak |url=http://www.cs.yale.edu/homes/zwan/papers/mcu/efrp.pdf |contribution=Event-Driven FRP |title=PADL |year=2002 |publisher=Yale |access-date=2013-09-23 |archive-url=https://web.archive.org/web/20130928163653/http://www.cs.yale.edu/homes/zwan/papers/mcu/efrp.pdf |archive-date=2013-09-28 |url-status=<del style="font-weight: bold; text-decoration: none;">dead</del>}}&lt;/ref&gt; These formulations have pushed for practical FRP, focusing on semantics that have a simple API that can be implemented efficiently in a setting such as robotics or in a web-browser.&lt;ref&gt;{{Citation |first1=Evan |last1=Czaplicki |first2=Stephen |last2=Chong |publisher=Harvard |contribution-url=http://people.seas.harvard.edu/~chong/abstracts/CzaplickiC13.html |contribution=Asynchronous Functional Reactive Programming for GUIs |title=PLDI |year=2013}}&lt;/ref&gt;</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Formulations such as Event-Driven FRP and versions of [[Elm (programming language)|Elm]] prior to 0.17 require that updates are discrete and event-driven.&lt;ref&gt;{{Citation |first1=Walid |last1=Taha |first2=Zhanyong |last2=Wan |first3=Paul |last3=Hudak |url=http://www.cs.yale.edu/homes/zwan/papers/mcu/efrp.pdf |contribution=Event-Driven FRP |title=PADL |year=2002 |publisher=Yale |access-date=2013-09-23 |archive-url=https://web.archive.org/web/20130928163653/http://www.cs.yale.edu/homes/zwan/papers/mcu/efrp.pdf |archive-date=2013-09-28 |url-status=<ins style="font-weight: bold; text-decoration: none;">deviated |archivedate=2013-09-28 |archiveurl=https://web.archive.org/web/20130928163653/http://www.cs.yale.edu/homes/zwan/papers/mcu/efrp.pdf </ins>}}&lt;/ref&gt; These formulations have pushed for practical FRP, focusing on semantics that have a simple API that can be implemented efficiently in a setting such as robotics or in a web-browser.&lt;ref&gt;{{Citation |first1=Evan |last1=Czaplicki |first2=Stephen |last2=Chong |publisher=Harvard |contribution-url=http://people.seas.harvard.edu/~chong/abstracts/CzaplickiC13.html |contribution=Asynchronous Functional Reactive Programming for GUIs |title=PLDI |year=2013}}&lt;/ref&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>In these formulations, it is common that the ideas of behaviors and events are combined into signals that always have a current value, but change discretely.&lt;ref&gt;{{Citation |date=Feb 2011 |first1=Zhanyong |last1=Wan |first2=Walid |last2=Taha |first3=Paul |last3=Hudak |url=http://haskell.cs.yale.edu/wp-content/uploads/2011/02/rt-frp.pdf |contribution=Real-Time FRP |title=ICFP |number=1 |access-date=2013-09-23 |archive-url=https://web.archive.org/web/20130928163734/http://haskell.cs.yale.edu/wp-content/uploads/2011/02/rt-frp.pdf |archive-date=2013-09-28 |url-status=<del style="font-weight: bold; text-decoration: none;">dead</del>}}&lt;/ref&gt;</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>In these formulations, it is common that the ideas of behaviors and events are combined into signals that always have a current value, but change discretely.&lt;ref&gt;{{Citation |date=Feb 2011 |first1=Zhanyong |last1=Wan |first2=Walid |last2=Taha |first3=Paul |last3=Hudak |url=http://haskell.cs.yale.edu/wp-content/uploads/2011/02/rt-frp.pdf |contribution=Real-Time FRP |title=ICFP |number=1 |access-date=2013-09-23 |archive-url=https://web.archive.org/web/20130928163734/http://haskell.cs.yale.edu/wp-content/uploads/2011/02/rt-frp.pdf |archive-date=2013-09-28 |url-status=<ins style="font-weight: bold; text-decoration: none;">deviated |archivedate=2013-09-28 |archiveurl=https://web.archive.org/web/20130928163734/http://haskell.cs.yale.edu/wp-content/uploads/2011/02/rt-frp.pdf </ins>}}&lt;/ref&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Interactive FRP==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Interactive FRP==</div></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 26:</td> <td colspan="2" class="diff-lineno">Line 26:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>*Create a data structure of actions which appear as the outputs. The actions must be run by an external interpreter or environment. This inherits all of the difficulties of the original stream [[input/output]] (I/O) system of [[Haskell]].&lt;ref&gt;{{cite web |url=https://courses.cs.washington.edu/courses/cse505/01au/functional/functional-io.pdf |title=I/O in Purely Functional Languages |first=Alan |last=Borning |archive-url=https://web.archive.org/web/20220428171557/https://courses.cs.washington.edu/courses/cse505/01au/functional/functional-io.pdf |archive-date=2022-04-28 |url-status=live}}&lt;/ref&gt;</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>*Create a data structure of actions which appear as the outputs. The actions must be run by an external interpreter or environment. This inherits all of the difficulties of the original stream [[input/output]] (I/O) system of [[Haskell]].&lt;ref&gt;{{cite web |url=https://courses.cs.washington.edu/courses/cse505/01au/functional/functional-io.pdf |title=I/O in Purely Functional Languages |first=Alan |last=Borning |archive-url=https://web.archive.org/web/20220428171557/https://courses.cs.washington.edu/courses/cse505/01au/functional/functional-io.pdf |archive-date=2022-04-28 |url-status=live}}&lt;/ref&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>*Use Arrowized FRP and embed arrows which are capable of performing actions. The actions may also have identities, which allows them to maintain separate mutable stores for example. This is the approach taken by the Fudgets library&lt;ref&gt;{{Cite web|url=https://cth.altocumulus.org/~hallgren/Thesis/fudgets_thesis_color.pdf|title=Fudgets – Purely Functional Processes with applications to Graphical User Interfaces|first1=Magnus|last1=Carlsson|first2=Thomas|last2=Hallgren|year=1998|archive-url=https://web.archive.org/web/20221015141447/https://cth.altocumulus.org/~hallgren/Thesis/fudgets_thesis_color.pdf|archive-date=2022-10-15|url-status=live}}&lt;/ref&gt; and, more generally, Monadic Stream Functions.&lt;ref&gt;{{Citation |date=July 2016 |first1=Ivan |last1=Perez |first2=Manuel |last2=Barenz |first3=Henrik |last3=Nilsson |url=http://www.cs.nott.ac.uk/~psxip1/papers/2016-HaskellSymposium-Perez-Barenz-Nilsson-FRPRefactored-short.pdf |contribution=Functional Reactive Programming, Refactored |title=Haskell Symposium}}&lt;/ref&gt;</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>*Use Arrowized FRP and embed arrows which are capable of performing actions. The actions may also have identities, which allows them to maintain separate mutable stores for example. This is the approach taken by the Fudgets library&lt;ref&gt;{{Cite web|url=https://cth.altocumulus.org/~hallgren/Thesis/fudgets_thesis_color.pdf|title=Fudgets – Purely Functional Processes with applications to Graphical User Interfaces|first1=Magnus|last1=Carlsson|first2=Thomas|last2=Hallgren|year=1998|archive-url=https://web.archive.org/web/20221015141447/https://cth.altocumulus.org/~hallgren/Thesis/fudgets_thesis_color.pdf|archive-date=2022-10-15|url-status=live}}&lt;/ref&gt; and, more generally, Monadic Stream Functions.&lt;ref&gt;{{Citation |date=July 2016 |first1=Ivan |last1=Perez |first2=Manuel |last2=Barenz |first3=Henrik |last3=Nilsson |url=http://www.cs.nott.ac.uk/~psxip1/papers/2016-HaskellSymposium-Perez-Barenz-Nilsson-FRPRefactored-short.pdf |contribution=Functional Reactive Programming, Refactored |title=Haskell Symposium}}&lt;/ref&gt;</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>*The novel approach is to allow actions to be run now (in the IO monad) but defer the receipt of their results until later.&lt;ref&gt;{{Cite web |url=http://www.cse.chalmers.se/~atze/papers/prprfrp.pdf |title=Practical Principled FRP |author1=Atze van der Ploeg |first2=Koen |last2=Claessen |access-date=2015-07-24 |archive-url=https://web.archive.org/web/20150701030428/http://www.cse.chalmers.se/~atze/papers/prprfrp.pdf |archive-date=2015-07-01 |url-status=<del style="font-weight: bold; text-decoration: none;">dead</del>}}&lt;/ref&gt; This makes use of an interaction between the Event and IO monads, and is compatible with a more expression-oriented FRP:</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>*The novel approach is to allow actions to be run now (in the IO monad) but defer the receipt of their results until later.&lt;ref&gt;{{Cite web |url=http://www.cse.chalmers.se/~atze/papers/prprfrp.pdf |title=Practical Principled FRP |author1=Atze van der Ploeg |first2=Koen |last2=Claessen |access-date=2015-07-24 |archive-url=https://web.archive.org/web/20150701030428/http://www.cse.chalmers.se/~atze/papers/prprfrp.pdf |archive-date=2015-07-01 |url-status=<ins style="font-weight: bold; text-decoration: none;">deviated |archivedate=2015-07-01 |archiveurl=https://web.archive.org/web/20150701030428/http://www.cse.chalmers.se/~atze/papers/prprfrp.pdf </ins>}}&lt;/ref&gt; This makes use of an interaction between the Event and IO monads, and is compatible with a more expression-oriented FRP:</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{sxhl|2=elm|</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{sxhl|2=elm|</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> planNow :: Event (IO a) -&gt; IO (Event a)</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> planNow :: Event (IO a) -&gt; IO (Event a)</div></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 41:</td> <td colspan="2" class="diff-lineno">Line 41:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Implementations exist for many [[programming language]]s, including:</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Implementations exist for many [[programming language]]s, including:</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Yampa is an arrowized, efficient, pure [[Haskell]] implementation with SDL, SDL2, OpenGL and HTML DOM support.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Yampa is an arrowized, efficient, pure [[Haskell]] implementation with SDL, SDL2, OpenGL and HTML DOM support.</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>* The language [[Elm (programming language)|Elm]] used to support FRP&lt;ref&gt;{{Citation |first=Evan |last=Czaplicki |url=https://www.seas.harvard.edu/sites/default/files/files/archived/Czaplicki.pdf |title=Elm: Concurrent FRP for Functional GUIs |date=Apr 2012 |place=Harvard |type=thesis |access-date=2015-02-17 |archive-url=https://web.archive.org/web/20160604000246/http://www.seas.harvard.edu/sites/default/files/files/archived/Czaplicki.pdf |archive-date=2016-06-04 |url-status=<del style="font-weight: bold; text-decoration: none;">dead</del>}}&lt;/ref&gt; but has since replaced it with a different pattern.&lt;ref&gt;{{cite web |last1=Czaplicki |first1=Evan |title=A Farewell to FRP |url=http://elm-lang.org/blog/farewell-to-frp |website=elm |access-date=14 July 2018 |ref=farewell-to-frp}}&lt;/ref&gt;</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>* The language [[Elm (programming language)|Elm]] used to support FRP&lt;ref&gt;{{Citation |first=Evan |last=Czaplicki |url=https://www.seas.harvard.edu/sites/default/files/files/archived/Czaplicki.pdf |title=Elm: Concurrent FRP for Functional GUIs |date=Apr 2012 |place=Harvard |type=thesis |access-date=2015-02-17 |archive-url=https://web.archive.org/web/20160604000246/http://www.seas.harvard.edu/sites/default/files/files/archived/Czaplicki.pdf |archive-date=2016-06-04 |url-status=<ins style="font-weight: bold; text-decoration: none;">deviated |archivedate=2016-06-04 |archiveurl=https://web.archive.org/web/20160604000246/https://www.seas.harvard.edu/sites/default/files/files/archived/Czaplicki.pdf </ins>}}&lt;/ref&gt; but has since replaced it with a different pattern.&lt;ref&gt;{{cite web |last1=Czaplicki |first1=Evan |title=A Farewell to FRP |url=http://elm-lang.org/blog/farewell-to-frp |website=elm |access-date=14 July 2018 |ref=farewell-to-frp}}&lt;/ref&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* reflex is an efficient push–pull FRP implementation in Haskell with hosts for [[web browser]] – [[Document Object Model]] (DOM), [[Simple DirectMedia Layer]] (SDL), and Gloss.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* reflex is an efficient push–pull FRP implementation in Haskell with hosts for [[web browser]] – [[Document Object Model]] (DOM), [[Simple DirectMedia Layer]] (SDL), and Gloss.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* reactive-banana is a target-agnostic push FRP implementation in Haskell.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* reactive-banana is a target-agnostic push FRP implementation in Haskell.</div></td> </tr> </table> InternetArchiveBot https://en.wikipedia.org/w/index.php?title=Functional_reactive_programming&diff=1202045815&oldid=prev Mathnerd314159: change paradigms template to navbox (see Template talk:Programming paradigms#too long) 2024-02-01T22:54:03Z <p>change paradigms template to navbox (see <a href="/wiki/Template_talk:Programming_paradigms#too_long" title="Template talk:Programming paradigms">Template talk:Programming paradigms#too long</a>)</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 22:54, 1 February 2024</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 1:</td> <td colspan="2" class="diff-lineno">Line 1:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{Short description|Programming paradigm}}</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{Short description|Programming paradigm}}</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{Distinguish|text=factory reset protection (FRP), a feature in some [[Android (operating system)|Android]] devices}}</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{Distinguish|text=factory reset protection (FRP), a feature in some [[Android (operating system)|Android]] devices}}</div></td> </tr> <tr> <td class="diff-marker"><a class="mw-diff-movedpara-left" title="Paragraph was moved. Click to jump to new location." href="#movedpara_3_1_rhs">&#x26AB;</a></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><a name="movedpara_1_0_lhs"></a>{{Programming paradigms}}</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>'''Functional reactive programming''' ('''FRP''') is a [[programming paradigm]] for [[reactive programming]] ([[asynchronous programming|asynchronous]] [[dataflow programming]]) using the building blocks of [[functional programming]] (e.g., [[Map (higher-order function)|map]], [[Fold (higher-order function)|reduce]], [[Filter (higher-order function)|filter]]). FRP has been used for programming [[graphical user interface]]s (GUIs), [[robotics]], games, and music, aiming to simplify these problems by explicitly modeling time.{{Citation needed|date=March 2016}}</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>'''Functional reactive programming''' ('''FRP''') is a [[programming paradigm]] for [[reactive programming]] ([[asynchronous programming|asynchronous]] [[dataflow programming]]) using the building blocks of [[functional programming]] (e.g., [[Map (higher-order function)|map]], [[Fold (higher-order function)|reduce]], [[Filter (higher-order function)|filter]]). FRP has been used for programming [[graphical user interface]]s (GUIs), [[robotics]], games, and music, aiming to simplify these problems by explicitly modeling time.{{Citation needed|date=March 2016}}</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 62:</td> <td colspan="2" class="diff-lineno">Line 61:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== References ==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== References ==</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{Reflist}}</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{Reflist}}</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker"><a class="mw-diff-movedpara-right" title="Paragraph was moved. Click to jump to old location." href="#movedpara_1_0_lhs">&#x26AB;</a></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><a name="movedpara_3_1_rhs"></a>{{Programming paradigms<ins style="font-weight: bold; text-decoration: none;"> navbox</ins>}}</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{DEFAULTSORT:Functional reactive programming}}</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{DEFAULTSORT:Functional reactive programming}}</div></td> </tr> </table> Mathnerd314159 https://en.wikipedia.org/w/index.php?title=Functional_reactive_programming&diff=1193729670&oldid=prev OAbot: Open access bot: arxiv updated in citation with #oabot. 2024-01-05T09:31:32Z <p><a href="/wiki/Wikipedia:OABOT" class="mw-redirect" title="Wikipedia:OABOT">Open access bot</a>: arxiv updated in citation with #oabot.</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 09:31, 5 January 2024</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 51:</td> <td colspan="2" class="diff-lineno">Line 51:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Dunai is a fast implementation in Haskell using [[Monadic Stream Functions]] that supports Classic and Arrowized FRP.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Dunai is a fast implementation in Haskell using [[Monadic Stream Functions]] that supports Classic and Arrowized FRP.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* ObservableComputations, a cross-platform [[.NET]] implementation.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* ObservableComputations, a cross-platform [[.NET]] implementation.</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>* Stella is an [[actor model]]-based reactive language that demonstrates a model of "actors" and "reactors" which aims to avoid the issues of combining imperative code with reactive code (by separating them in actors and reactors).&lt;ref name="stella"&gt;{{Citation |url=https://drops.dagstuhl.de/opus/volltexte/2020/13176/ |first1=Sam |last1=Van den Vonder |first2=Thierry |last2=Renaux |first3=Bjarno |last3=Oeyen |first4=Joeri |last4=De Koster |first5=Wolfgang |last5=De Meuter |contribution=Tackling the Awkward Squad for Reactive Programming: The Actor-Reactor Model |title=Leibniz International Proceedings in Informatics (LIPIcs) |volume=166 |year=2020 |pages=19:1–19:29 |doi=10.4230/LIPIcs.ECOOP.2020.19 |isbn=9783959771542 |s2cid=260445152}}&lt;/ref&gt; Actors are suitable for use in distributed reactive systems.&lt;ref name="stella2"&gt;{{Citation |url=https://programming-journal.org/2022/6/14/ |first1=Sam |last1=Van den Vonder |first2=Thierry |last2=Renaux |first3=Wolfgang |last3=De Meuter |contribution=Topology-Level Reactivity in Distributed Reactive Programs: Reactive Acquaintance Management using Flocks |title=The Art, Science, and Engineering of Programming |volume=6 |year=2022 |issue=3 |pages=14:1–14:36 |doi=10.22152/programming-journal.org/2022/6/14 |s2cid=246979565|doi-access=free }}&lt;/ref&gt;</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>* Stella is an [[actor model]]-based reactive language that demonstrates a model of "actors" and "reactors" which aims to avoid the issues of combining imperative code with reactive code (by separating them in actors and reactors).&lt;ref name="stella"&gt;{{Citation |url=https://drops.dagstuhl.de/opus/volltexte/2020/13176/ |first1=Sam |last1=Van den Vonder |first2=Thierry |last2=Renaux |first3=Bjarno |last3=Oeyen |first4=Joeri |last4=De Koster |first5=Wolfgang |last5=De Meuter |contribution=Tackling the Awkward Squad for Reactive Programming: The Actor-Reactor Model |title=Leibniz International Proceedings in Informatics (LIPIcs) |volume=166 |year=2020 |pages=19:1–19:29 |doi=10.4230/LIPIcs.ECOOP.2020.19 |isbn=9783959771542 |s2cid=260445152}}&lt;/ref&gt; Actors are suitable for use in distributed reactive systems.&lt;ref name="stella2"&gt;{{Citation |url=https://programming-journal.org/2022/6/14/ |first1=Sam |last1=Van den Vonder |first2=Thierry |last2=Renaux |first3=Wolfgang |last3=De Meuter |contribution=Topology-Level Reactivity in Distributed Reactive Programs: Reactive Acquaintance Management using Flocks |title=The Art, Science, and Engineering of Programming |volume=6 |year=2022 |issue=3 |pages=14:1–14:36 |doi=10.22152/programming-journal.org/2022/6/14 |s2cid=246979565|doi-access=free<ins style="font-weight: bold; text-decoration: none;"> |arxiv=2202.09228</ins> }}&lt;/ref&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>*[[TidalCycles]] is a pure FRP domain specific language for musical pattern, embedded in the [[Haskell]] language.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>*[[TidalCycles]] is a pure FRP domain specific language for musical pattern, embedded in the [[Haskell]] language.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> </table> OAbot https://en.wikipedia.org/w/index.php?title=Functional_reactive_programming&diff=1190108824&oldid=prev OAbot: Open access bot: doi updated in citation with #oabot. 2023-12-16T00:26:04Z <p><a href="/wiki/Wikipedia:OABOT" class="mw-redirect" title="Wikipedia:OABOT">Open access bot</a>: doi updated in citation with #oabot.</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 00:26, 16 December 2023</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 51:</td> <td colspan="2" class="diff-lineno">Line 51:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Dunai is a fast implementation in Haskell using [[Monadic Stream Functions]] that supports Classic and Arrowized FRP.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Dunai is a fast implementation in Haskell using [[Monadic Stream Functions]] that supports Classic and Arrowized FRP.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* ObservableComputations, a cross-platform [[.NET]] implementation.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* ObservableComputations, a cross-platform [[.NET]] implementation.</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>* Stella is an [[actor model]]-based reactive language that demonstrates a model of "actors" and "reactors" which aims to avoid the issues of combining imperative code with reactive code (by separating them in actors and reactors).&lt;ref name="stella"&gt;{{Citation |url=https://drops.dagstuhl.de/opus/volltexte/2020/13176/ |first1=Sam |last1=Van den Vonder |first2=Thierry |last2=Renaux |first3=Bjarno |last3=Oeyen |first4=Joeri |last4=De Koster |first5=Wolfgang |last5=De Meuter |contribution=Tackling the Awkward Squad for Reactive Programming: The Actor-Reactor Model |title=Leibniz International Proceedings in Informatics (LIPIcs) |volume=166 |year=2020 |pages=19:1–19:29 |doi=10.4230/LIPIcs.ECOOP.2020.19 |isbn=9783959771542 |s2cid=260445152}}&lt;/ref&gt; Actors are suitable for use in distributed reactive systems.&lt;ref name="stella2"&gt;{{Citation |url=https://programming-journal.org/2022/6/14/ |first1=Sam |last1=Van den Vonder |first2=Thierry |last2=Renaux |first3=Wolfgang |last3=De Meuter |contribution=Topology-Level Reactivity in Distributed Reactive Programs: Reactive Acquaintance Management using Flocks |title=The Art, Science, and Engineering of Programming |volume=6 |year=2022 |issue=3 |pages=14:1–14:36 |doi=10.22152/programming-journal.org/2022/6/14 |s2cid=246979565}}&lt;/ref&gt;</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>* Stella is an [[actor model]]-based reactive language that demonstrates a model of "actors" and "reactors" which aims to avoid the issues of combining imperative code with reactive code (by separating them in actors and reactors).&lt;ref name="stella"&gt;{{Citation |url=https://drops.dagstuhl.de/opus/volltexte/2020/13176/ |first1=Sam |last1=Van den Vonder |first2=Thierry |last2=Renaux |first3=Bjarno |last3=Oeyen |first4=Joeri |last4=De Koster |first5=Wolfgang |last5=De Meuter |contribution=Tackling the Awkward Squad for Reactive Programming: The Actor-Reactor Model |title=Leibniz International Proceedings in Informatics (LIPIcs) |volume=166 |year=2020 |pages=19:1–19:29 |doi=10.4230/LIPIcs.ECOOP.2020.19 |isbn=9783959771542 |s2cid=260445152}}&lt;/ref&gt; Actors are suitable for use in distributed reactive systems.&lt;ref name="stella2"&gt;{{Citation |url=https://programming-journal.org/2022/6/14/ |first1=Sam |last1=Van den Vonder |first2=Thierry |last2=Renaux |first3=Wolfgang |last3=De Meuter |contribution=Topology-Level Reactivity in Distributed Reactive Programs: Reactive Acquaintance Management using Flocks |title=The Art, Science, and Engineering of Programming |volume=6 |year=2022 |issue=3 |pages=14:1–14:36 |doi=10.22152/programming-journal.org/2022/6/14 |s2cid=246979565<ins style="font-weight: bold; text-decoration: none;">|doi-access=free </ins>}}&lt;/ref&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>*[[TidalCycles]] is a pure FRP domain specific language for musical pattern, embedded in the [[Haskell]] language.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>*[[TidalCycles]] is a pure FRP domain specific language for musical pattern, embedded in the [[Haskell]] language.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> </table> OAbot https://en.wikipedia.org/w/index.php?title=Functional_reactive_programming&diff=1181630108&oldid=prev Jerryobject: WP:REFerence WP:CITation parameters: respaces, adds, fills, conform to master templates. Small WP:COPYEDITs WP:EoS: WP:TERSE, clarify. Cut needless carriage return whitespace characters in sections: standardize, aid work via small screens. WP:LINKs: adds, update-standardizes, needless WP:PIPEs > WP:NOPIPEs. WP:SLASHes > WP:NDASHes. MOS:FIRSTABBReviations clarify, define before WP:ABBRs in parentheses. 2023-10-24T07:25:46Z <p><a href="/wiki/Wikipedia:REF" class="mw-redirect" title="Wikipedia:REF">WP:REFerence</a> <a href="/wiki/Wikipedia:CIT" class="mw-redirect" title="Wikipedia:CIT">WP:CITation</a> parameters: respaces, adds, fills, conform to master templates. Small <a href="/wiki/Wikipedia:COPYEDIT" class="mw-redirect" title="Wikipedia:COPYEDIT">WP:COPYEDITs</a> <a href="/wiki/Wikipedia:EoS" class="mw-redirect" title="Wikipedia:EoS">WP:EoS</a>: <a href="/wiki/Wikipedia:TERSE" class="mw-redirect" title="Wikipedia:TERSE">WP:TERSE</a>, clarify. Cut needless <a href="/wiki/Carriage_return" title="Carriage return">carriage return</a> <a href="/wiki/Whitespace_character" title="Whitespace character">whitespace characters</a> in sections: standardize, aid work via small screens. <a href="/wiki/Wikipedia:LINK" class="mw-redirect" title="Wikipedia:LINK">WP:LINKs</a>: adds, update-standardizes, needless <a href="/wiki/Wikipedia:PIPE" class="mw-redirect" title="Wikipedia:PIPE">WP:PIPEs</a> &gt; <a href="/wiki/Wikipedia:NOPIPE" class="mw-redirect" title="Wikipedia:NOPIPE">WP:NOPIPEs</a>. <a href="/wiki/Wikipedia:SLASH" class="mw-redirect" title="Wikipedia:SLASH">WP:SLASHes</a> &gt; <a href="/wiki/Wikipedia:NDASH" class="mw-redirect" title="Wikipedia:NDASH">WP:NDASHes</a>. <a href="/wiki/MOS:FIRSTABBR" class="mw-redirect" title="MOS:FIRSTABBR">MOS:FIRSTABBReviations</a> clarify, define before <a href="/wiki/Wikipedia:ABBR" class="mw-redirect" title="Wikipedia:ABBR">WP:ABBRs</a> in parentheses.</p> <a href="//en.wikipedia.org/w/index.php?title=Functional_reactive_programming&amp;diff=1181630108&amp;oldid=1176714013">Show changes</a> Jerryobject https://en.wikipedia.org/w/index.php?title=Functional_reactive_programming&diff=1176714013&oldid=prev Citation bot: Alter: volume. Add: s2cid. | Use this bot. Report bugs. | Suggested by Abductive | #UCB_webform 1405/3840 2023-09-23T14:44:44Z <p>Alter: volume. Add: s2cid. | <a href="/wiki/Wikipedia:UCB" class="mw-redirect" title="Wikipedia:UCB">Use this bot</a>. <a href="/wiki/Wikipedia:DBUG" class="mw-redirect" title="Wikipedia:DBUG">Report bugs</a>. | Suggested by Abductive | #UCB_webform 1405/3840</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 14:44, 23 September 2023</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 52:</td> <td colspan="2" class="diff-lineno">Line 52:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Dunai is a fast implementation in Haskell using [[Monadic Stream Functions]] that supports Classic and Arrowized FRP.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Dunai is a fast implementation in Haskell using [[Monadic Stream Functions]] that supports Classic and Arrowized FRP.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* ObservableComputations, a cross-platform .NET implementation.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* ObservableComputations, a cross-platform .NET implementation.</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>* Stella is an actor-based reactive programming language that demonstrates a model of "actors" and "reactors" which aims to avoid the issues of combining imperative code with reactive code (by separating them in actors and reactors).&lt;ref name="stella"&gt;{{Citation | url = https://drops.dagstuhl.de/opus/volltexte/2020/13176/ | first1 = Sam | last1 = Van den Vonder | first2 = Thierry | last2 = Renaux | first3 = Bjarno | last3 = Oeyen | first4 = Joeri | last4 = De Koster | first5 = Wolfgang | last5 = De Meuter | contribution = Tackling the Awkward Squad for Reactive Programming: The Actor-Reactor Model | title = Leibniz International Proceedings in Informatics (LIPIcs) | volume = 166 | year = 2020 | pages = 19:1–19:29 | doi = 10.4230/LIPIcs.ECOOP.2020.19| isbn = 9783959771542 }}.&lt;/ref&gt; Actors are suitable for use in distributed reactive systems.&lt;ref name="stella2"&gt;{{Citation | url = https://programming-journal.org/2022/6/14/ | first1 = Sam | last1 = Van den Vonder | first2 = Thierry | last2 = Renaux | first3 = Wolfgang | last3 = De Meuter | contribution = Topology-Level Reactivity in Distributed Reactive Programs: Reactive Acquaintance Management using Flocks | title = The Art, Science, and Engineering of Programming | volume = 6<del style="font-weight: bold; text-decoration: none;">:3</del> | year = 2022 | issue = 3 | pages = 14:1–14:36 | doi = 10.22152/programming-journal.org/2022/6/14 | s2cid = 246979565 }}&lt;/ref&gt;</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>* Stella is an actor-based reactive programming language that demonstrates a model of "actors" and "reactors" which aims to avoid the issues of combining imperative code with reactive code (by separating them in actors and reactors).&lt;ref name="stella"&gt;{{Citation | url = https://drops.dagstuhl.de/opus/volltexte/2020/13176/ | first1 = Sam | last1 = Van den Vonder | first2 = Thierry | last2 = Renaux | first3 = Bjarno | last3 = Oeyen | first4 = Joeri | last4 = De Koster | first5 = Wolfgang | last5 = De Meuter | contribution = Tackling the Awkward Squad for Reactive Programming: The Actor-Reactor Model | title = Leibniz International Proceedings in Informatics (LIPIcs) | volume = 166 | year = 2020 | pages = 19:1–19:29 | doi = 10.4230/LIPIcs.ECOOP.2020.19| isbn = 9783959771542<ins style="font-weight: bold; text-decoration: none;"> | s2cid = 260445152</ins> }}.&lt;/ref&gt; Actors are suitable for use in distributed reactive systems.&lt;ref name="stella2"&gt;{{Citation | url = https://programming-journal.org/2022/6/14/ | first1 = Sam | last1 = Van den Vonder | first2 = Thierry | last2 = Renaux | first3 = Wolfgang | last3 = De Meuter | contribution = Topology-Level Reactivity in Distributed Reactive Programs: Reactive Acquaintance Management using Flocks | title = The Art, Science, and Engineering of Programming | volume = 6 | year = 2022 | issue = 3 | pages = 14:1–14:36 | doi = 10.22152/programming-journal.org/2022/6/14 | s2cid = 246979565 }}&lt;/ref&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>*[[TidalCycles]] is a pure FRP domain specific language for musical pattern, embedded in the [[Haskell (programming language)|Haskell]] programming language.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>*[[TidalCycles]] is a pure FRP domain specific language for musical pattern, embedded in the [[Haskell (programming language)|Haskell]] programming language.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> </table> Citation bot https://en.wikipedia.org/w/index.php?title=Functional_reactive_programming&diff=1175711761&oldid=prev C. A. Russell: capitalize Android (operating system)| 2023-09-16T22:09:13Z <p>capitalize <a href="/wiki/Android_(operating_system)" title="Android (operating system)">Android (operating system)</a></p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 22:09, 16 September 2023</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 1:</td> <td colspan="2" class="diff-lineno">Line 1:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{Short description|Programming paradigm}}</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{Short description|Programming paradigm}}</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>{{Distinguish|text=factory reset protection (FRP), a feature in some [[Android (operating system)|<del style="font-weight: bold; text-decoration: none;">android</del>]] devices}}</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>{{Distinguish|text=factory reset protection (FRP), a feature in some [[Android (operating system)|<ins style="font-weight: bold; text-decoration: none;">Android</ins>]] devices}}</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{Programming paradigms}}</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{Programming paradigms}}</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>'''Functional reactive programming''' ('''FRP''') is a [[programming paradigm]] for [[reactive programming]] ([[asynchronous programming|asynchronous]] [[dataflow programming]]) using the building blocks of [[functional programming]] (e.g. [[Map (higher-order function)|map]], [[Fold (higher-order function)|reduce]], [[Filter (higher-order function)|filter]]). FRP has been used for programming [[graphical user interface]]s (GUIs), [[robotics]], games, and music, aiming to simplify these problems by explicitly modeling time.{{Citation needed|date = March 2016}}</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>'''Functional reactive programming''' ('''FRP''') is a [[programming paradigm]] for [[reactive programming]] ([[asynchronous programming|asynchronous]] [[dataflow programming]]) using the building blocks of [[functional programming]] (e.g. [[Map (higher-order function)|map]], [[Fold (higher-order function)|reduce]], [[Filter (higher-order function)|filter]]). FRP has been used for programming [[graphical user interface]]s (GUIs), [[robotics]], games, and music, aiming to simplify these problems by explicitly modeling time.{{Citation needed|date = March 2016}}</div></td> </tr> </table> C. A. Russell