Advertisement

Generic Graphical User Interfaces

  • Peter Achten
  • Marko van Eekelen
  • Rinus Plasmeijer
Part of the Lecture Notes in Computer Science book series (LNCS, volume 3145)

Abstract

It is important to be able to program GUI applications in a fast and easy manner. Current GUI tools for creating visually attractive applications offer limited functionality. In this paper we introduce a new, easy to use method to program GUI applications in a pure functional language such as Clean or Generic Haskell. The method we use is a refined version of the model-view paradigm.

The basic component in our approach is the Graphical Editor Component (GEC τ ) that can contain any value of any flat data type τ and that can be freely used to display and edit its value. GEC τ s can depend on others, but also on themselves. They can even be mutually dependent. With these components we can construct a flexible, reusable and customizable editor. For the realization of the components we had to invent a new generic implementation technique for interactive applications.

Keywords

Functional Programming Functional Language Data Constructor Visual Editor Receiver Object 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Achten, P., Plasmeijer, R.: Interactive Functional Objects in Clean. In: Clack, C., Hammond, K., Davie, T. (eds.) IFL 1997. LNCS, vol. 1467, pp. 304–321. Springer, Heidelberg (1998)CrossRefGoogle Scholar
  2. 2.
    Achten, P., Peyton Jones, S.: Porting the Clean Object I/O Library to Haskell. In: Mohnen, M., Koopman, P. (eds.) IFL 2000. LNCS, vol. 2011, pp. 194–213. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  3. 3.
    Alimarine, A., Plasmeijer, R.: A Generic Programming Extension for Clean. In: Arts, T., Mohnen, M. (eds.) The 13th International workshop on the Implementation of Functional Languages, IFL 2001, Selected Papers, Älvsjö, Sweden, September 2002, pp. 168–186 (2002)Google Scholar
  4. 4.
    Angelov, Krasimir Andreev. ObjectIO for Haskell. Description and Sources (2003), at http://www.haskell.org/ObjectIO/, Applications at free.top.bg/ka2_mail/
  5. 5.
    Barendsen, E., Smetsers, S.: Graph Rewriting Aspects of Functional Programming. In: Handbook of Graph Grammars and Computing by Graph Transformation, ch. 2, pp. 63–102. World Scientific, Singapore (1999)Google Scholar
  6. 6.
    Carlsson, M., Hallgren, T.: Fudgets - a graphical user interface in a lazy functional language. In: Proceedings of the ACM Conference on Functional Programming and Computer Architecture, FPCA 1993, Kopenhagen, Denmark (1993)Google Scholar
  7. 7.
    Claessen, K., Vullinghs, T., Meijer, E.: Structuring Graphical Paradigms in TkGofer. In: Proceedings of the 1997 ACM SIGPLAN International Conference on Functional Programming (ICFP 1997), Amsterdam, The Netherlands, June 9-11, vol. 32(8), pp. 251–262. ACM Press, New York (1997)CrossRefGoogle Scholar
  8. 8.
    Clarke, D., Löh, A.: Generic Haskell, Specifically. In: Gibbons, J., Jeuring, J. (eds.) Generic Programming. Proceedings of the IFIP TC2 Working Conference on Generic Programming, Schloss Dagstuhl, July 2003, pp. 21–48. Kluwer Academic Publishers, Dordrecht (2003) ISBN 1-4020-7374-7Google Scholar
  9. 9.
    de Mol, M., van Eekelen, M., Plasmeijer, R.: Theorem proving for functional programmers - Sparkle: A functional theorem prover. In: Arts, T., Mohnen, M. (eds.) IFL 2002. LNCS, vol. 2312, pp. 55–72. Springer, Heidelberg (2002)CrossRefGoogle Scholar
  10. 10.
    Diviánszky, P.: Haskell - Clean Compiler. ELTE, Budapest (2003), Software at aszt.inf.elte.hu/~fun_ver/2003/software/HsCleanAll2.0.2.zip
  11. 11.
    Fulgham, B.: The Clean ObjectIO Library under Linux (Gtk+) (May 2003) Description at people.debian.org/~bfulgham/clean_examples, Sources at people.debian.org/~bfulgham/clean/objectio-linux.tar.gz
  12. 12.
    Hegedus, H.: Haskell to Clean Front End. Master’s thesis, ELTE, Budapest, Hungary (2001)Google Scholar
  13. 13.
    Hinze, R.: A new approach to generic functional programming. In: The 27th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, Boston, Massachusetts, January 2000, pp. 119–132 (2000)Google Scholar
  14. 14.
    Hinze, R., Peyton Jones, S.: Derivable Type Classes. In: Hutton, G. (ed.) 2000 ACM SIGPLAN Haskell Workshop, Montreal, Canada. ENTCS, vol. 41(1), Elsevier Science, Amsterdam (2001)Google Scholar
  15. 15.
    Karlsen, W.: Using Concurrent Haskell to Develop Views over an Active Repository. In: Clack, C., Hammond, K., Davie, T. (eds.) IFL 1997. LNCS, vol. 1467, pp. 285–303. Springer, Heidelberg (1998)CrossRefGoogle Scholar
  16. 16.
    Hanna, K.: Interactive Visual Functional Programming. In: Jones, S.P. (ed.) Proc. Intnl Conf. on Functional Programming, October 2002, pp. 100–112. ACM, New York (2002)Google Scholar
  17. 17.
    Koopman, P., Alimarine, A., Tretmans, J., Plasmeijer, R.: Gast: Generic Automated Software Testing. In: Peña, R., Arts, T. (eds.) IFL 2002. LNCS, vol. 2670, pp. 84–100. Springer, Heidelberg (2003)CrossRefGoogle Scholar
  18. 18.
    Krasner, G., Pope, S.: A cookbook for using the Model-View-Controller user interface paradigm in Smalltalk-80. Journal of Object-Oriented Programming 1(3), 26–49 (1988)Google Scholar
  19. 19.
    Peyton Jones, S., Gordon, A., Finne, S.: Concurrent Haskell. In: 23rd ACM Symposium on Principles of Programming Languages (POPL 1996), St. Petersburg Beach, Florida, pp. 295–308. ACM, New York (1996)CrossRefGoogle Scholar
  20. 20.
    van Weelden, A., Plasmeijer, R.: Towards a strongly typed functional operating system. In: Peña, R., Arts, T. (eds.) IFL 2002. LNCS, vol. 2670, pp. 215–231. Springer, Heidelberg (2003)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2004

Authors and Affiliations

  • Peter Achten
    • 1
  • Marko van Eekelen
    • 1
  • Rinus Plasmeijer
    • 1
  1. 1.Department of Software TechnologyUniversity of NijmegenThe Netherlands

Personalised recommendations