{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2022,3,29]],"date-time":"2022-03-29T00:40:53Z","timestamp":1648514453919},"reference-count":36,"publisher":"Cambridge University Press (CUP)","issue":"2","license":[{"start":{"date-parts":[[2012,11,22]],"date-time":"2012-11-22T00:00:00Z","timestamp":1353542400000},"content-version":"unspecified","delay-in-days":0,"URL":"https:\/\/www.cambridge.org\/core\/terms"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["J. Funct. Prog."],"published-print":{"date-parts":[[2013,3]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p>State-based interactive applications, whether they run on the desktop or as a web application, can be considered as collections of interconnected editors of structured values that allow users to manipulate data. This is the view that is advocated by the<jats:italic>GEC<\/jats:italic>and<jats:italic>iData<\/jats:italic>toolkits, which offer a high level of abstraction to programming desktop and web GUI applications respectively. Special features of these toolkits are that editors have<jats:italic>shared<\/jats:italic>,<jats:italic>persistent<\/jats:italic>state, and that they<jats:italic>handle events<\/jats:italic>individually. In this paper we cast these toolkits within the<jats:italic>Arrow<\/jats:italic>framework and present<jats:italic>EditorArrow<\/jats:italic>: a single, unified semantic model that defines shared state and event handling. We study the properties of<jats:italic>EditorArrow<\/jats:italic>, and of editors in particular. Furthermore, we present the definedness properties of the combinators. A reference implementation of the<jats:italic>EditorArrow<\/jats:italic>model is given with some small program examples. We discuss formal reasoning about the model using the proof assistant<jats:italic>Sparkle<\/jats:italic>. The availability of this tool has proved to be indispensable in this endeavor.<\/jats:p>","DOI":"10.1017\/s0956796812000421","type":"journal-article","created":{"date-parts":[[2012,11,22]],"date-time":"2012-11-22T11:34:00Z","timestamp":1353584040000},"page":"185-224","source":"Crossref","is-referenced-by-count":2,"title":["EditorArrow: An arrow-based model for editor-based programming"],"prefix":"10.1017","volume":"23","author":[{"given":"PETER","family":"ACHTEN","sequence":"first","affiliation":[]},{"given":"MARKO","family":"VAN EEKELEN","sequence":"additional","affiliation":[]},{"given":"MAARTEN","family":"DE MOL","sequence":"additional","affiliation":[]},{"given":"RINUS","family":"PLASMEIJER","sequence":"additional","affiliation":[]}],"member":"56","published-online":{"date-parts":[[2012,11,22]]},"reference":[{"key":"S0956796812000421_ref14","unstructured":"Eekelen M. van , Smetsers S. & Plasmeijer R. (1997) Graph rewriting semantics for functional programming languages. Computer Science Logic, 106\u2013128."},{"key":"S0956796812000421_ref13","first-page":"37","volume-title":"Implementation and Application of Functional Languages, 17th International Workshop, IFL 2005, Dublin, Ireland, September 19\u201321, 2005, Revised Selected Papers","author":"Eekelen","year":"2005"},{"key":"S0956796812000421_ref6","doi-asserted-by":"crossref","unstructured":"Carlsson M. & Hallgren T. (1993) Fudgets \u2013 a graphical user interface in a lazy functional language. In Proceedings of the ACM Conference on Functional Programming and Computer Architecture (FPCA \u201893).","DOI":"10.1145\/165180.165228"},{"key":"S0956796812000421_ref10","unstructured":"Courtney A. & Elliott C. (2001 September) Genuinely Functional User Interfaces. In Proceedings of the 2001 Haskell Workshop."},{"key":"S0956796812000421_ref5","doi-asserted-by":"publisher","DOI":"10.1017\/CBO9780511624193"},{"key":"S0956796812000421_ref15","doi-asserted-by":"crossref","unstructured":"Elliott C. & Hudak P. (1997, June). Functional reactive animation. In International Conference on Functional Programming, pp. 163\u2013173.","DOI":"10.1145\/258948.258973"},{"key":"S0956796812000421_ref11","doi-asserted-by":"crossref","first-page":"7","DOI":"10.1145\/871895.871897","volume-title":"Proceedings of the 2003 ACM SIGPLAN Haskell Workshop (Haskell'03)","author":"Courtney","year":"2003"},{"key":"S0956796812000421_ref9","unstructured":"Courtney A. A . (2004 May) Modeling User Interfaces in a Functional Language. PhD thesis, Yale University."},{"key":"S0956796812000421_ref31","doi-asserted-by":"publisher","DOI":"10.1007\/11737414_17"},{"key":"S0956796812000421_ref8","doi-asserted-by":"publisher","DOI":"10.1145\/800068.802157"},{"key":"S0956796812000421_ref7","unstructured":"Carlsson M. & Hallgren T. (1998) Fudgets \u2013 Purely Functional Processes with Applications to Graphical User Interfaces. PhD thesis, Chalmers University of Technology, G\u00f6teborg University, Sweden. ISBN 91-7197-611-6; ISSN 0346-718X."},{"key":"S0956796812000421_ref12","first-page":"177","volume-title":"Ifl","author":"Dowse","year":"2004"},{"key":"S0956796812000421_ref34","volume-title":"Clean language report version 2.1.","author":"Plasmeijer","year":"2002"},{"key":"S0956796812000421_ref2","first-page":"39","volume-title":"Practical Aspects of Declarative Programming, PADL04","author":"Achten","year":"2004"},{"key":"S0956796812000421_ref36","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-45587-6_13"},{"key":"S0956796812000421_ref27","first-page":"41","volume-title":"Proceedings of the 2nd Central-European Functional Programming School, CEFP 2007, Cluj-Napoca, Romania","author":"Mol","year":"2008"},{"key":"S0956796812000421_ref17","doi-asserted-by":"publisher","DOI":"10.1016\/B978-044482830-9\/50035-7"},{"key":"S0956796812000421_ref33","doi-asserted-by":"publisher","DOI":"10.1145\/606666.606670"},{"key":"S0956796812000421_ref35","volume-title":"Designing the User Interface: Strategies for Effective Human-Computer Interaction","author":"Shneiderman","year":"1992"},{"key":"S0956796812000421_ref3","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-30477-7_18"},{"key":"S0956796812000421_ref20","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-44833-4_6"},{"key":"S0956796812000421_ref1","volume-title":"Selected Papers of the 15th International Workshop on the Implementation of Functional Languages, IFL03, Edinburgh, UK","author":"Achten","year":"2003"},{"key":"S0956796812000421_ref4","first-page":"210","volume-title":"Proceedings of the 5th International Summer School on Advanced Functional Programming (AFP 2004)","author":"Achten","year":"2004"},{"key":"S0956796812000421_ref19","volume-title":"Communicating Sequential Processes","author":"Hoare","year":"1985"},{"key":"S0956796812000421_ref23","first-page":"1","volume-title":"Trends in Functional Programming 5: Selected Papers from the 5th International Symposium on Trends in Functional Programming (TFP04)","author":"Kesteren","year":"2004"},{"key":"S0956796812000421_ref32","first-page":"106","volume-title":"Implementation and Application of Functional Languages, 17th International Workshop, ifl 2005, Dublin, Ireland, September 19\u201321, 2005, revised selected papers","author":"Plasmeijer","year":"2006"},{"key":"S0956796812000421_ref22","doi-asserted-by":"publisher","DOI":"10.1016\/S0167-6423(99)00023-4"},{"key":"S0956796812000421_ref18","first-page":"27","volume-title":"Proceedings of the 8th International ACM Sigplan Conference on Principle and Practice of Declarative Programming (PPDP'06)","author":"Hanus","year":"2006"},{"key":"S0956796812000421_ref21","first-page":"1","volume-title":"Proceedings of the Third ACM Sigplan Conference on History of Programming Languages","author":"Hudak","year":"2007"},{"key":"S0956796812000421_ref24","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-10235-3"},{"key":"S0956796812000421_ref25","unstructured":"Mol M. de. (2009 March 4) Reasoning about Functional Programs \u2013 Sparkle: A Proof Assistant for Clean. PhD thesis, University of Nijmegen, The Netherlands. ISBN 978-90-9023885-2."},{"key":"S0956796812000421_ref26","first-page":"55","volume-title":"Proceedings of the 13th International Workshop on Implementation of Functional Languages, IFL 2001, Stockholm, Sweden, Selected Papers","author":"Mol","year":"2002"},{"key":"S0956796812000421_ref28","first-page":"229","volume-title":"International Conference on Functional Programming","author":"Paterson","year":"2001"},{"key":"S0956796812000421_ref16","doi-asserted-by":"crossref","first-page":"49","DOI":"10.1145\/1863523.1863530","volume-title":"Proceedings of the Haskell Symposium, Haskell'10, Baltimore, MD, USA","author":"Groningen","year":"2010"},{"key":"S0956796812000421_ref29","first-page":"1","volume-title":"Central-European Functional Programming School, E\u00f6tv\u00f6s Lor\u00e1nd University, Budapest, Hungary \u2013 Revised Selected Lectures","author":"Plasmeijer","year":"2005"},{"key":"S0956796812000421_ref30","first-page":"108","volume-title":"Proceedings of the 18th International Symposium on Implementation and Application of Functional Languages, IFL'06","author":"Plasmeijer","year":"2006"}],"container-title":["Journal of Functional Programming"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.cambridge.org\/core\/services\/aop-cambridge-core\/content\/view\/S0956796812000421","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2022,1,31]],"date-time":"2022-01-31T20:44:57Z","timestamp":1643661897000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.cambridge.org\/core\/product\/identifier\/S0956796812000421\/type\/journal_article"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2012,11,22]]},"references-count":36,"journal-issue":{"issue":"2","published-print":{"date-parts":[[2013,3]]}},"alternative-id":["S0956796812000421"],"URL":"https:\/\/doi.org\/10.1017\/s0956796812000421","relation":{},"ISSN":["0956-7968","1469-7653"],"issn-type":[{"value":"0956-7968","type":"print"},{"value":"1469-7653","type":"electronic"}],"subject":[],"published":{"date-parts":[[2012,11,22]]}}}