iEditors: Extending iTask with Interactive Plug-ins

  • Jan Martin Jansen
  • Rinus Plasmeijer
  • Pieter Koopman
Part of the Lecture Notes in Computer Science book series (LNCS, volume 5836)


The iTask library of Clean enables the user to specify web-enabled workflow systems on a high level of abstraction. Details like client-server communication, storage and retrieval of state information, HTML generation, and web form handling are all handled automatically. Using only standard HTML web browser elements also has a disadvantage: it does not offer the same level of interaction as we are used to from desktop applications. Browser plug-ins can fill this gap. They make it possible to extend web-applications with interactive functionality like the making of drawings. In this paper we explain how plug-ins can be nicely integrated in the iTask system. A special feature of the integration is the possibility for a plug-in to use Clean functions as call-back mechanism for the handling of events. These call-backs can be handled on the server as well as on the client. As a result we are now able to create interactive iTask applications (iEditors) using plug-ins like graphical editors. Although complicated, distributed multi-user applications can be created in this way, reasoning about the program remains easy since all code is generated from one and the same source: the high-level iTask specification in Clean.


Client Side Clean Program Algebraic Data Type Generic Java Class Full Clean 
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.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Introducing JSON, (visited March 2009)
  2. 2.
    Bray, T., Paoli, J., Sperberg-Macqueen, C.: Extensible Markup Language (XML) 1.0 (w3c recommendation). Technical Report (1998),
  3. 3.
    Cooper, E., Lindley, S., Wadler, P., Yallop, J.: Links: Web programming without tiers. In: de Boer, F.S., Bonsangue, M.M., Graf, S., de Roever, W.-P. (eds.) FMCO 2006. LNCS, vol. 4709, pp. 266–296. Springer, Heidelberg (2007)CrossRefGoogle Scholar
  4. 4.
    Evans, E., Rogers, D.: Using Java applets and CORBA for multi-user distributed applications. IEEE Internet Computing 1, 43–55 (1997)Google Scholar
  5. 5.
    Garrett, J.: Ajax: A new approach to web applications, 2005, (visited March 2009)
  6. 6.
    Gosling, J., Joy, B., Steele, G.: The Java Language Specification. Sun Microsystems (1996)Google Scholar
  7. 7.
    Hanus, M.: Putting declarative programming into the web: Translating Curry to JavaScript. In: Proc. of the 9th International ACM SIGPLAN Conference on Principle and Practice of Declarative Programming (PPDP 2007), pp. 155–166. ACM Press, New York (2007)Google Scholar
  8. 8.
    Hinze, R.: A new approach to generic functional programming. In: Proceedings of the 27th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (January 2000)Google Scholar
  9. 9.
    Jansen, J.M., Koopman, P., Plasmeijer, R.: Efficient interpretation by transforming data types and patterns to functions. In: Nilsson, H. (ed.) Proceedings Seventh Symposium on Trends in Functional Programming, TFP 2006, Nottingham, UK, The University of Nottingham, April 19-21. Trends in Functional Programming, vol. 7. Intellect Publisher (2006)Google Scholar
  10. 10.
    Knabben, F.C.: FCK editor (2003), (visited March 2009)
  11. 11.
    Krishnamurthi, S.: The Flapjax site (2007), (visited March 2009)
  12. 12.
    Liang, S.: Java Native Interface: Programmer’s Guide and Reference. Addison-Wesley Longman Publishing Company, Amsterdam (1999)Google Scholar
  13. 13.
    Loitsch, F., Serrano, M.: Hop client-side compilation. In: Trends in Functional Programming, TFP 2007, New York, pp. 141–158, Interact (2008)Google Scholar
  14. 14.
    McCluskey, G.: Using Java reflection (1998), (visited March 2009)
  15. 15.
    Meijer, E., Finne, S.: Lambada: Haskell as a better Java. In: Proceedings of the 2000 Haskell Workshop, Montreal, Canada (2000)Google Scholar
  16. 16.
    OMG: Object Management Group. The Common Object Request Broker: Architecture and SpecificationRevision 2.0 (1996), (visited March 2009)
  17. 17.
    Paulson, L.D.: Building Rich Web Applications with Ajax. Computer 38(10), 14–17 (2005)CrossRefGoogle Scholar
  18. 18.
    Plasmeijer, R., Achten, P.: The implementation of iData. In: Butterfield, A., Grelck, C., Huch, F. (eds.) IFL 2005. LNCS, vol. 4015, pp. 106–123. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  19. 19.
    Plasmeijer, R., Achten, P., Koopman, P.: iTasks: Executable specifications of interactive work flow systems for the web. In: Ramsey, N. (ed.) Proceedings of the 2007 ACM SIGPLAN International Conference on Functional Programming, ICFP 2007, Freiburg, Germany, October 1-3, pp. 141–152. ACM, New York (2007)CrossRefGoogle Scholar
  20. 20.
    Plasmeijer, R., Jansen, J.M., Koopman, P., Achten, P.: Declarative Ajax and client side evaluation of workflows using iTasks. In: Principles and Practice of Declarative Programming, PPDP 2008, Valencia, Spain (2008)Google Scholar
  21. 21.
    Reinke, C.: Towards a haskell/Java connection. In: Hammond, K., Davie, T., Clack, C. (eds.) IFL 1998. LNCS, vol. 1595, pp. 203–219. Springer, Heidelberg (1999)CrossRefGoogle Scholar
  22. 22.
    Serrano, M., Gallesio, E., Loitsch, F.: Hop: a language for programming the web 2.0. In: ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA 2006), Portland, Oregon, USA, October 22-26, pp. 975–985 (2006)Google Scholar
  23. 23.
    Sun Microsystems. Release notes for the next-generation Java Plug-In technology (2008), (visited March 2009)
  24. 24.
    van Weelden, A.: Putting Types To Good Use. PhD thesis, Radboud University Nijmegen, the Netherlands (2007)Google Scholar
  25. 25.
    W3 Schools. Ajax tutorial (2008),

Copyright information

© Springer-Verlag Berlin Heidelberg 2011

Authors and Affiliations

  • Jan Martin Jansen
    • 1
  • Rinus Plasmeijer
    • 2
  • Pieter Koopman
    • 2
  1. 1.Faculty of Military SciencesNetherlands Defence AcademyDen Helderthe Netherlands
  2. 2.Institute for Computing and Information Sciences (ICIS)Radboud University Nijmegenthe Netherlands

Personalised recommendations