Skip to main content
×
×
Home

EditorArrow: An arrow-based model for editor-based programming

  • PETER ACHTEN (a1), MARKO VAN EEKELEN (a2), MAARTEN DE MOL (a3) and RINUS PLASMEIJER (a4)
Abstract

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 GEC and iData 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 shared, persistent state, and that they handle events individually. In this paper we cast these toolkits within the Arrow framework and present EditorArrow: a single, unified semantic model that defines shared state and event handling. We study the properties of EditorArrow, and of editors in particular. Furthermore, we present the definedness properties of the combinators. A reference implementation of the EditorArrow model is given with some small program examples. We discuss formal reasoning about the model using the proof assistant Sparkle. The availability of this tool has proved to be indispensable in this endeavor.

Copyright
References
Hide All
Achten, P., Eekelen, M. van & Plasmeijer, R. (2003) Generic Graphical User Interfaces. In Selected Papers of the 15th International Workshop on the Implementation of Functional Languages, IFL03, Edinburgh, UK. Michaelson, G. & Trinder, P. (eds), LNCS, vol. 3145. Springer Verlag.
Achten, P., Eekelen, M. van & Plasmeijer, R. (2004a) Compositional model-views with generic Graphical User Interfaces. In Practical Aspects of Declarative Programming, PADL04. LNCS, vol. 3057. Springer Verlag, pp. 3955.
Achten, P., Eekelen, M. van, Plasmeijer, R. & van Weelden, A. (2004b) Automatic Generation of editors for higher-order data structures. In Second Asian Symposium on Programming Languages and Systems (APLAS 2004), Wei-Ngan, C. (ed), LNCS, vol. 3302. Springer Verlag, pp. 262279.
Achten, P., Eekelen, M. van, Plasmeijer, R. & van Weelden, A. (2004c) GEC: A toolkit for Generic Rapid Prototyping of type safe interactive applications. In Proceedings of the 5th International Summer School on Advanced Functional Programming (AFP 2004). LNCS, vol. 3622. Springer Verlag, pp. 210244.
Baeten, J. C. M. & Weijland, W. P. (1990) Process Algebra. Cambridge Tracts in Theoretical Computer Science, vol. 18. Cambridge University Press.
Carlsson, M. & Hallgren, T. (1993) Fudgets – a graphical user interface in a lazy functional language. In Proceedings of the ACM Conference on Functional Programming and Computer Architecture (FPCA ‘93).
Carlsson, M. & Hallgren, T. (1998) Fudgets – Purely Functional Processes with Applications to Graphical User Interfaces. PhD thesis, Chalmers University of Technology, Göteborg University, Sweden. ISBN 91-7197-611-6; ISSN 0346-718X.
Cartwright, R. & Donahue, J. (1982) The semantics of lazy (and industrious) evaluation. In Proceedings of the 1982 ACM Symposium on Lisp and Functional Programming (LFP ‘82). New York: ACM, pp. 253264.
Courtney, A. A. (2004 May) Modeling User Interfaces in a Functional Language. PhD thesis, Yale University.
Courtney, A. & Elliott, C. (2001 September) Genuinely Functional User Interfaces. In Proceedings of the 2001 Haskell Workshop.
Courtney, A., Nilsson, H. & Peterson, J. (2003) The Yampa arcade. In Proceedings of the 2003 ACM SIGPLAN Haskell Workshop (Haskell'03). Uppsala, Sweden: ACM Press, pp. 718.
Dowse, M., Butterfield, A. & Eekelen, M. van. (2004) Reasoning about deterministic concurrent functional i/o. In Ifl, Grelck, C., Huch, F., Michaelson, G. & Trinder, Philip W. (eds), Lecture Notes in Computer Science, vol. 3474. Springer, pp. 177194.
Eekelen, M. van & Mol, Ma. de. (2005) Proof tool support for explicit strictness. In Implementation and Application of Functional Languages, 17th International Workshop, IFL 2005, Dublin, Ireland, September 19–21, 2005, Revised Selected Papers, Butterfield, A., Grelck, C. & Huch, F. (eds), LNCS, vol. 4015. Springer Verlag, pp. 3754.
Eekelen, M. van, Smetsers, S. & Plasmeijer, R. (1997) Graph rewriting semantics for functional programming languages. Computer Science Logic, 106–128.
Elliott, C. & Hudak, P. (1997, June). Functional reactive animation. In International Conference on Functional Programming, pp. 163–173.
Groningen, J. van, Noort, T. van, Achten, P., Koopman, P. & Plasmeijer, R. (2010) Exchanging sources between Clean and Haskell – A double-edged front end for the Clean compiler. Proceedings of the Haskell Symposium, Haskell'10, Baltimore, MD, USA, Gibbons, J. (ed), ACM Press, pp. 4960.
Groote, J. F. & Reniers, M. A. (2001) Algebraic process verification. In Handbook of Process Algebra. Bergstra, J. A., Ponse, A. & Smolka, S. A. (eds), Elsevier Science B.V., Chap. 17, pp. 11511208.
Hanus, M. (2006) Type-oriented construction of Web User Interfaces. In Proceedings of the 8th International ACM Sigplan Conference on Principle and Practice of Declarative Programming (PPDP'06). ACM Press, pp. 2738.
Hoare, C. A. R. (1985) Communicating Sequential Processes. International Series in Computer Science. Prentice-Hall International.
Hudak, P., Courtney, A., Nilsson, H. & Peterson, J. (2003) Arrows, robots, and functional reactive programming. In Advanced Functional Programming, 4th International School, Oxford. Jeuring, J. & Peyton Jones, S. (eds), LNCS, vol. 2638. Springer Verlag, pp. 159187.
Hudak, P., Hughes, J., Peyton Jones, S. & Wadler, P. (2007) A history of haskell: Being lazy with class. In Proceedings of the Third ACM Sigplan Conference on History of Programming Languages. HOPL III. New York: ACM, pp. 12-155.
Hughes, J. (2000) Generalising monads to arrows. Sci. Comput. Program. 37 (May), 67111.
Kesteren, R. van, Eekelen, M. van & Mol, M. de. (2004) Proof support for general type classes. In Trends in Functional Programming 5: Selected Papers from the 5th International Symposium on Trends in Functional Programming (TFP04). Loidl, H.-W. (ed), Intellect, pp. 116.
Milner, R. (1980) A Calculus of Communicating Systems. LNCS, vol. 92. Springer Verlag.
Mol, M. de. (2009 March 4) Reasoning about Functional Programs – Sparkle: A Proof Assistant for Clean. PhD thesis, University of Nijmegen, The Netherlands. ISBN 978-90-9023885-2.
Mol, M. de, Eekelen, M. van & Plasmeijer, R. (2002) Theorem proving for functional programmers – Sparkle: A functional theorem prover. In Proceedings of the 13th International Workshop on Implementation of Functional Languages, IFL 2001, Stockholm, Sweden, Selected Papers. Arts, T. & Mohnen, M. (eds), LNCS, vol. 2312. Springer Verlag, pp. 5572.
Mol, M. de, Eekelen, M. van & Plasmeijer, R. (2008) Proving properties of lazy functional programs with SPARKLE. In Proceedings of the 2nd Central-European Functional Programming School, CEFP 2007, Cluj-Napoca, Romania. Horváth, Z. (ed), LNCS, vol. 5161. Springer Verlag, pp. 4186.
Paterson, R. (2001) A new notation for arrows. In International Conference on Functional Programming. ACM Press, pp. 229240.
Plasmeijer, R. & Achten, P. (2005) Generic editors for the World Wide Web. In Central-European Functional Programming School, Eötvös Loránd University, Budapest, Hungary – Revised Selected Lectures. LNCS, vol. 4164. Springer Verlag, pp. 134.
Plasmeijer, R. & Achten, P. (2006a) A conference management system based on the iData toolkit. In Proceedings of the 18th International Symposium on Implementation and Application of Functional Languages, IFL'06. Horváth, Z. & Zsók, V. (eds), LNCS, vol. 4449. Budapest, Hungary, Eötvös Loránd University, Faculty of Informatics, Department of Programming Languages and Compilers: Springer Verlag, pp. 108125.
Plasmeijer, R. & Achten, P. (2006b) iData for the World Wide Web – Programming interconnected web forms. In Proceedings of the 8th International Symposium on Functional and Logic Programming (FLOPS 2006). LNCS, vol. 3945. Fuji Susone, Japan: Springer Verlag, pp. 242258.
Plasmeijer, R. & Achten, P. (2006c) The implementation of iData – A case study in generic programming. In Implementation and Application of Functional Languages, 17th International Workshop, ifl 2005, Dublin, Ireland, September 19–21, 2005, revised selected papers, Butterfield, A., Grelck, C. & Huch, F. (eds), LNCS, vol. 4015. Department of Computer Science, Trinity College, University of Dublin: Springer Verlag, pp. 106123.
Plasmeijer, R. & Eekelen, M. van. (1999) Keep it clean: A unique approach to functional programming. ACM SIGPLAN Noti. 34 (6), 2331.
Plasmeijer, R. & Eekelen, M. van. (2002) Clean language report version 2.1. Department of Software Technology, University of Nijmegen.
Shneiderman, B. (1992) Designing the User Interface: Strategies for Effective Human-Computer Interaction, 2nd ed.Addison Wesley.
Thiemann, P. (2002) WASH/CGI: Server-side web scripting with sessions and typed, compositional forms. In Practical Aspects of Declarative Languages: 4th International Symposium, PADL 2002, Krishnamurthi, S. & Ramakrishnan, C. R. (eds), LNCS, vol. 2257. Portland, OR: Springer-Verlag, pp. 192208.
Recommend this journal

Email your librarian or administrator to recommend adding this journal to your organisation's collection.

Journal of Functional Programming
  • ISSN: 0956-7968
  • EISSN: 1469-7653
  • URL: /core/journals/journal-of-functional-programming
Please enter your name
Please enter a valid email address
Who would you like to send this to? *
×

Metrics

Full text views

Total number of HTML views: 0
Total number of PDF views: 0 *
Loading metrics...

Abstract views

Total abstract views: 0 *
Loading metrics...

* Views captured on Cambridge Core between <date>. This data will be updated every 24 hours.

Usage data cannot currently be displayed

EditorArrow: An arrow-based model for editor-based programming

  • PETER ACHTEN (a1), MARKO VAN EEKELEN (a2), MAARTEN DE MOL (a3) and RINUS PLASMEIJER (a4)
Submit a response

Discussions

No Discussions have been published for this article.

×

Reply to: Submit a response


Your details


Conflicting interests

Do you have any conflicting interests? *