Hostname: page-component-586b7cd67f-r5fsc Total loading time: 0 Render date: 2024-11-25T00:54:05.963Z Has data issue: false hasContentIssue false

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

Published online by Cambridge University Press:  22 November 2012

PETER ACHTEN
Affiliation:
Institute for Computing and Information Sciences, Radboud University Nijmegen, Nijmegen, The Netherlands (e-mail: [email protected])
MARKO VAN EEKELEN
Affiliation:
Institute for Computing and Information Sciences, Radboud University Nijmegen, Nijmegen, The Netherlands and School of Computer Science, Open University of The Netherlands, Heerlen, The Netherlands (e-mail: [email protected])
MAARTEN DE MOL
Affiliation:
Formal Methods and Tools, University of Twente, Enschede, The Netherlands (e-mail: [email protected])
RINUS PLASMEIJER
Affiliation:
Institute for Computing and Information Sciences, Radboud University Nijmegen, Nijmegen, The Netherlands (e-mail: [email protected])
Rights & Permissions [Opens in a new window]

Abstract

Core share and HTML view are not available for this content. However, as you have access to this content, a full PDF is available via the ‘Save PDF’ action button.

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.

Type
Articles
Copyright
Copyright © Cambridge University Press 2012

References

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.Google Scholar
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.Google Scholar
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.CrossRefGoogle Scholar
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.Google Scholar
Baeten, J. C. M. & Weijland, W. P. (1990) Process Algebra. Cambridge Tracts in Theoretical Computer Science, vol. 18. Cambridge University Press.CrossRefGoogle Scholar
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).CrossRefGoogle Scholar
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.Google Scholar
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.CrossRefGoogle Scholar
Courtney, A. A. (2004 May) Modeling User Interfaces in a Functional Language. PhD thesis, Yale University.Google Scholar
Courtney, A. & Elliott, C. (2001 September) Genuinely Functional User Interfaces. In Proceedings of the 2001 Haskell Workshop.Google Scholar
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.CrossRefGoogle Scholar
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.Google Scholar
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.Google Scholar
Eekelen, M. van, Smetsers, S. & Plasmeijer, R. (1997) Graph rewriting semantics for functional programming languages. Computer Science Logic, 106–128.CrossRefGoogle Scholar
Elliott, C. & Hudak, P. (1997, June). Functional reactive animation. In International Conference on Functional Programming, pp. 163–173.CrossRefGoogle Scholar
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.CrossRefGoogle Scholar
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.CrossRefGoogle Scholar
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.Google Scholar
Hoare, C. A. R. (1985) Communicating Sequential Processes. International Series in Computer Science. Prentice-Hall International.Google Scholar
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.CrossRefGoogle Scholar
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.Google Scholar
Hughes, J. (2000) Generalising monads to arrows. Sci. Comput. Program. 37 (May), 67111.CrossRefGoogle Scholar
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.Google Scholar
Milner, R. (1980) A Calculus of Communicating Systems. LNCS, vol. 92. Springer Verlag.CrossRefGoogle Scholar
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.Google Scholar
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.Google Scholar
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.Google Scholar
Paterson, R. (2001) A new notation for arrows. In International Conference on Functional Programming. ACM Press, pp. 229240.Google Scholar
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.Google Scholar
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.Google Scholar
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.CrossRefGoogle Scholar
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.Google Scholar
Plasmeijer, R. & Eekelen, M. van. (1999) Keep it clean: A unique approach to functional programming. ACM SIGPLAN Noti. 34 (6), 2331.CrossRefGoogle Scholar
Plasmeijer, R. & Eekelen, M. van. (2002) Clean language report version 2.1. Department of Software Technology, University of Nijmegen.Google Scholar
Shneiderman, B. (1992) Designing the User Interface: Strategies for Effective Human-Computer Interaction, 2nd ed.Addison Wesley.Google Scholar
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.CrossRefGoogle Scholar
Submit a response

Discussions

No Discussions have been published for this article.