Task-oriented programming in a pure functional language

Task-Oriented Programming (TOP) is a novel programming paradigm for the construction of distributed systems where users work together on the internet. When multiple users collaborate, they need to interact with each other frequently. TOP supports the definition of tasks that react to the progress made by others. With TOP, complex multi-user interactions can be programmed in a declarative style just by defining the tasks that have to be accomplished, thus eliminating the need to worry about the implementation detail that commonly frustrates the development of applications for this domain. TOP builds on four core concepts: tasks that represent computations or work to do which have an observable value that may change over time, data sharing enabling tasks to observe each other while the work is in progress, generic type driven generation of user interaction, and special combinators for sequential and parallel task composition. The semantics of these core concepts is defined in this paper. As an example we present the iTask3 framework, which embeds TOP in the functional programming language Clean.

[1]  Manuel Serrano,et al.  Hop Client-Side Compilation , 2007, Trends in Functional Programming.

[2]  Bas Lijnse,et al.  iTasks 2: iTasks for End-users , 2009, IFL.

[3]  Rinus Plasmeijer,et al.  Incidone: A Task-Oriented Incident Coordination Tool , 2012 .

[4]  Erik Meijer Server side web scripting in Haskell , 2000, J. Funct. Program..

[5]  Peter J. F. Lucas,et al.  Managing COPD Exacerbations with Telemedicine , 2011, AIME.

[6]  Peter Thiemann,et al.  WASH/CGI: Server-Side Web Scripting with Sessions and Typed, Compositional Forms , 2002, PADL.

[7]  Rinus Plasmeijer,et al.  Capturing the Netherlands Coast Guard's SAR Workflow with iTasks , 2011 .

[8]  Gary Klein,et al.  Working Minds: A Practitioner's Guide to Cognitive Task Analysis , 2006 .

[9]  Marinus J. Plasmeijer,et al.  iTasks: executable specifications of interactive work flow systems for the web , 2007, ICFP '07.

[10]  Arjen van Weelden,et al.  Putting Types To Good Use , 2007 .

[11]  Rinus Plasmeijer,et al.  Towards dynamic workflows for crisis management , 2010 .

[12]  Philip Wadler,et al.  Links: Web Programming Without Tiers , 2006, FMCO.

[13]  Juan-Carlos Cano,et al.  HOP: achieving efficient anonymity in MANETs by combining HIP, OLSR, and pseudonyms , 2006, OOPSLA 2006.

[14]  Ken Friis Larsen,et al.  Typing XHTML Web Applications in ML , 2004, PADL.

[15]  Erick Gallesio,et al.  Hop: a language for programming the web 2.0 , 2006, OOPSLA Companion.

[16]  Philip Wadler,et al.  An idiom's guide to formlets ? , 2007 .

[17]  Eelco Visser,et al.  WebWorkFlow: An Object-Oriented Workflow Modeling Language for Web Applications , 2008, MoDELS.

[18]  Michael Hanus,et al.  High-Level Server Side Web Scripting in Curry , 2001, PADL.

[19]  Ralf Hinze,et al.  A new approach to generic functional programming , 2000, POPL '00.

[20]  Wil M. P. van der Aalst,et al.  Workflow Patterns , 2003, Distributed and Parallel Databases.

[21]  Marinus J. Plasmeijer,et al.  An Effective Methodology for Defining Consistent Semantics of Complex Systems , 2009, CEFP.

[22]  Marinus J. Plasmeijer,et al.  Exchanging sources between clean and Haskell: a double-edged front end for the clean compiler , 2010, Haskell '10.

[23]  Martin Elsman,et al.  Web Programming with SMLserver , 2003, PADL.

[24]  Artem Alimarine,et al.  Generic functional programming conceptual design, implementation and applications , 2005 .

[25]  Marinus J. Plasmeijer,et al.  Lazy Dynamic Input/Output in the Lazy Functional Language Clean , 2002, IFL.