• No results found

Blueprints should contain as much detail about the program as necessary to understand what a program does, but no more than that. In practice, this means that blueprints should mostly show control flow and data flow, but little else. Achieving this becomes easier when the target program is implemented with a strict separation of concerns in mind. For example, layout code must not clutter blueprints, which should mainly present control and data flow.

Achieving separation of concerns in iTasks can be achieved by applying Task-Oriented Software Development (TOSD) practices. TOSD separates traditional functional pro- gramming (TFP), like the definitions of algebraic data types and pure functions, from TOP-concerns such as tasks, shares, and layout. The separation of tasks, shares, and layout are valuable for rendering blueprints, so they do not get cluttered. The separation of TFP and the other concerns is valuable, because pure functions are easy to test and reason about, improving the reliability of the code. How the explicit awareness of TOSD can impact the development process remains a subject for future work. Still, one can already imagine human-machine-interaction experts working together jointly but orthog- onally with task programmers to create the best possible software, both from a technical and usability standpoint.

8.5

Applications in C2

One of the goals of this thesis was to implement a prototype of a part of a C2 application. Since the C2 domain is far from trivial, a structured development approach was required. This resulted in the development of the TOSD approach.

The use of TOSD in the development of this C2 prototype is clearly visible in the program code of the C2 application. Significant parts of the application, such as shortest- path calculations and network flow calculations, are implemented using nothing but pure functions and algebraic data types. This resulted in code that was easily debugged and tested.

iTasks’ ability to distribute tasks and automatically synchronize state between mul- tiple clients plays a crucial role in the prototype application. In the application, multiple users need to work together to perform damage control on board of a ship. Task dele- gation and shared situational awareness are key to doing so successfully. TOP supports these requirements well. Task delegation is a built-in task, whereas shares provide a shared situational awareness for free.

One aspect of the application is that it contains a model of a ship in which various fire fighting and damage control (FFDC) scenarios can be performed. Currently, the ship models are created using a crude built-in editor. Future work should focus on taking the design of a real ship and use it as a realistic environment for the FFDC scenarios. In addition to the creation of a more realistic environment, another desirable next step would be to link the prototype to an OPV’s on-board systems so that we can read out real internal sensor data and utilize the on-board communication systems.

8.6

Wrapping Up

The new and improved tools presented in this thesis provide TOP developers with more means to implement software for complex domains. Additionally, the tools suggest new ways of developing functional programs in general. It is our hope that this work, combined with the work upon which it is built, will make TOP more accessible to a wider audience. We hope that particularly blueprints will eventually find applications in the wider field of functional programming as well.

8.6. WRAPPING UP

My Publications

Published Articles

– F. Bolderheij, J.M. Jansen, J. Stutterheim, and B. Kool. Consequence Manage- ment – Declarative Modelling of Maritime C2-systems. In MAST Asia. 2017. – P. Achten, J. Stutterheim, B. Lijnse, and R. Plasmeijer. Towards the Layout of

Things. In Proceedings of the 28nd International Symposium on Implementation and Application of Functional Languages, IFL 16, pages 3:1–3:13, New York, NY, USA, 2014. ACM.

– J. Stutterheim, R. Plasmeijer, and P. Achten. Static and Dynamic Visualisations of Monadic Programs. In Proceedings of the 27th International Symposium on Implementation and Application of Functional Languages, IFL 15, pages 1:1–1:13, New York, NY, USA, 2015. ACM.

– P. Achten, J. Stutterheim, L. Domoszlai, and R. Plasmeijer. Task Oriented Programming with Purely Compositional Interactive Scalable Vector Graphics. In S. Tobin-Hochstadt, editor, Proceedings of the 26nd International Symposium on Implementation and Application of Functional Languages, IFL 14, pages 7:1–7:13, New York, NY, USA, 2014. ACM.

– J. Stutterheim, R. Plasmeijer, and P. Achten. Tonic: An Infrastructure to Graphically Represent the Definition and Behaviour of Tasks. In J. Hage and J. McCarthy, editors, Trends in Functional Programming, volume 8843 of Lecture Notes in Computer Science, pages 122–141. Springer Berlin Heidelberg, 2014. – A. Dijkstra, J. Stutterheim, A. Vermeulen, and D. Swierstra. Building JavaScript

applications with Haskell. In R. Hinze, editor, Implementation and Application of Functional Languages: 24th International Symposium, IFL 2012, Oxford, UK, Au- gust 30 - September 1, 2012, Revised Selected Papers, pages 37–52. Springer Berlin Heidelberg, Berlin, Heidelberg, 2013.

– E. Petridou, E. Michail, M. Georgiou, D. Psilla, and J. Stutterheim. Reinvent- ing Democracy in the Digital Era. Yiannis Laouris and Afonso Ferreira, editors, Nicosia, 2012. ISBN 978-9963-677-81-8.

– J. Stutterheim, W. Swierstra, and D. Swierstra. Forty Hours of Declarative Programming. In Trends in Functional Programming in Education. 2012.

Technical Reports

– T. Steenvoorden, J. Stutterheim, E. Barendsen, and R. Plasmeijer. Visual Sup- port for Learning Monads. Technical Report, ICIS-R17001, Radboud University, Nijmegen, January 2017.

– J. Stutterheim. Improving the UHC JavaScript backend. Technical Report, Utrecht University, January 2012.

– W. Swierstra, D. Swierstra, and J. Stutterheim. Logisch en Functioneel Pro- grammeren voor Wiskunde D. Technical Report, UU-CS-2011-033, Utrecht Uni- versity, Utrecht, September 2011.

Unpublished Articles

– J. Stutterheim, P. Achten, and R. Plasmeijer. Maintaining Separation of Con- cerns Through Task-Oriented Software Development. Submitted for formal post- conference review at TFP ’17.

BIBLIOGRAPHY

Bibliography

[1] CMMIR for Development. Technical Report CMU/SEI-2010-TR-033, Software

Engineering Institute, Nov. 2010.

[2] Towards Haskell in the Cloud, Haskell ’11, New York, NY, USA, 2011. ACM. [3] P. Achten. Clean for Haskell98 programmers - a quick reference guide -, July 13

2007. http://www.mbsd.cs.ru.nl/publications/papers/2007/achp2007-CleanHaskellQuickGuide. pdf.

[4] P. Achten. Why functional programming matters to me. In P. Achten and P. Koop- man, editors, The Beauty of Functional Code - Essays Dedicated to Rinus Plasmei- jer on the Occasion of His 61st Birthday, Festschrift, number 8106 in LNAI, pages 79–96. Springer, August 2013.

[5] P. Achten and R. Plasmeijer. The ins and outs of Concurrent Clean I/O. Journal of Functional Programming, 5(1):81–110, 1995.

[6] P. Achten, J. Stutterheim, L. Domoszlai, and R. Plasmeijer. Task oriented program- ming with purely compositional interactive scalable vector graphics. In S. Tobin- Hochstadt, editor, Proceedings of the 26Nd 2014 International Symposium on Im- plementation and Application of Functional Languages, IFL ’14, pages 7:1–7:13, New York, NY, USA, 2014. ACM.

[7] P. Achten and M. Wierich. A tutorial to the Clean Object I/O library (version 1.2). Technical report CSI-R0003, Radboud University Nijmegen, Feb. 2000. 294 pages.

[8] A. Alimarine and R. Plasmeijer. A generic programming extension for Clean. In T. Arts and M. Mohnen, editors, Selected Papers of the 13th International Work- shop on the Implementation of Functional Languages, IFL ’01, Stockholm, Sweden, volume 2312 of LNCS, pages 168–186. Springer-Verlag, 2002.

[9] S. Ambler. Agile Modeling: E↵ective Practices for eXtreme Programming and the Unified Process. Wiley, 1st edition, April 2002.

[10] G. Andy. Debugging haskell by observing intermediate data structures. Electronic Notes in Theoretical Computer Science, 41(1):1 –, 2001.

[11] E. Arisholm, L. C. Briand, S. E. Hove, and Y. Labiche. The impact of uml doc- umentation on software maintenance: An experimental evaluation. IEEE Trans. Softw. Eng., 32(6):365–381, June 2006.

[12] asm.js, Aug. 2014.

[13] J. Backus. Can programming be liberated from the von neumann style?: A func- tional style and its algebra of programs. Commun. ACM, 21(8):613–641, Aug. 1978.

[14] A. Balmaks, J. Kelly, and J. Smith. Strategic Command and Control Lessons – Scoping Study, July 2003.

[15] E. Barendsen and S. Smetsers. Uniqueness typing for functional languages with graph rewriting semantics. In Mathematical Structures in Computer Science, vol- ume 6, pages 579–612, 1996.

[16] J. Bjornson, A. Tayanovskyy, and A. Granicz. Composing reactive guis in f# using websharper. In Proceedings of the 22Nd International Conference on Implemen- tation and Application of Functional Languages, IFL’10, pages 203–216, Berlin, Heidelberg, 2011. Springer-Verlag.

[17] R. Boulton, A. Gordon, M. Gordon, J. Harrison, J. Herbert, and J. v. Tassel. Ex- perience with embedding hardware description languages in HOL. In V. Stavridou, T. F. Melham, and R. T. Boute, editors, Proceedings of the IFIP TC10/WG 10.2 International Conference on Theorem Provers in Circuit Design: Theory, Prac- tice and Experience, volume A-10 of IFIP Transactions A: Computer Science and Technology, pages 129–156, Nijmegen, The Netherlands, 1993. North-Holland. [18] E. Bru¨el and J. M. Jansen. Implementing a non-strict purely Functional Language

in JavaScript. In Implementation of Functional Languages, 2010.

[19] R. M. Burstall, D. B. MacQueen, and D. T. Sannella. Hope: An experimental applicative language. In Proceedings of the 1980 ACM Conference on LISP and Functional Programming, LFP ’80, pages 136–143, New York, NY, USA, 1980. ACM.

[20] W. E. Carlson, P. Hudak, and M. P. Jones. An Experiment Using Haskell to Prototype ”Geometric Region Servers” for Navy Command and Control. Technical Report 1031, Yale University, Nov. 1993.

[21] M. Carlsson and T. Hallgren. Fudgets - a graphical user interface in a lazy func- tional language. In Proceedings of the 6th International Conference on Func- tional Programming Languages and Computer Architecture, FPCA ’93, Kopen- hagen, Denmark, 1993.

[22] K. Claessen, T. Vullinghs, and E. Meijer. Structuring graphical paradigms in TkGofer. In Proceedings of the 2nd International Conference on Functional Pro- gramming, ICFP ’97, volume 32(8), pages 251–262, Amsterdam, The Netherlands, 9-11, June 1997. ACM Press.

[23] E. Cooper, S. Lindley, P. Wadler, and J. Yallop. Links: web programming with- out tiers. In Proceedings of the 5th International Symposium on Formal Methods for Components and Objects, FMCO ’06, volume 4709, CWI, Amsterdam, The Netherlands, 7-10, Nov. 2006. Springer-Verlag.

[24] A. Courtney and C. Elliott. Genuinely functional user interfaces. In Proceedings of the 5th Haskell Workshop, Haskell ’01, Sept. 2001.

[25] A. A. Courtney. Modeling User Interfaces in a Functional Language. PhD thesis, Yale University, USA, May 2004.

[26] E. Czaplicki and S. Chong. Asynchronous functional reactive programming for guis. In Proceedings of the 34th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI ’13, pages 411–422, New York, NY, USA, 2013. ACM.

[27] E. Dahlstr¨om, P. Dengler, A. Grasso, C. Lilley, C. McCormack, D. Schepers, and J. Watt. Scalable vector graphics (svg) 1.1 (second edition). Technical Report REC-SVG11-20110816, W3C Recommendation 16 August 2011, 2011.

[28] L. Damas and R. Milner. Principal type-schemes for functional programs. In Proceedings of Principles of Programming Languages (POPL), POPL ’82, pages 207–212, New York, NY, USA, 1982. ACM, ACM.

[29] A. Dijkstra, J. Fokker, and S. D. Swierstra. The Architecture of the Utrecht Haskell Compiler. In Haskell Symposium, 2009.

BIBLIOGRAPHY

[30] A. Dijkstra, J. Fokker, and S. D. Swierstra. UHC Utrecht Haskell Compiler. http://www.cs.uu.nl/wiki/UHC, 2009.

[31] A. Dijkstra, J. Stutterheim, A. Vermeulen, and S. D. Swierstra. Building javascript applications with haskell. In R. Hinze, editor, Implementation and Application of Functional Languages: 24th International Symposium, IFL 2012, Oxford, UK, August 30 - September 1, 2012, Revised Selected Papers, pages 37–52. Springer Berlin Heidelberg, Berlin, Heidelberg, 2013.

[32] E. W. Dijkstra. Selected Writings on Computing: A Personal Perspective. Springer- Verlag New York, Inc., New York, NY, USA, 1982.

[33] L. Domoszlai, E. Bru¨el, and J. Jansen. Implementing a non-strict purely functional language in JavaScript. Acta Universitatis Sapientiae, 3:76–98, 2011.

[34] L. Domoszlai, B. Lijnse, and R. Plasmeijer. Editlets: Type-based, client-side edi- tors for itasks. In S. Tobin-Hochstadt, editor, Proceedings of the 26Nd 2014 Inter- national Symposium on Implementation and Application of Functional Languages, IFL ’14, pages 6:1–6:13, New York, NY, USA, 2014. ACM.

[35] L. Domoszlai, B. Lijnse, and R. Plasmeijer. Parametric lenses: Change notification for bidirectional lenses. In Proceedings of the 26Nd 2014 International Symposium on Implementation and Application of Functional Languages, IFL ’14, pages 9:1– 9:11, New York, NY, USA, 2014. ACM.

[36] ECMA International, Geneva, Switzerland. ECMAScript Language Specification. http://www.ecma-international.org/publications/standards/Ecma-262.htm, 2011.

[37] A. Ekblad. Towards a declarative web. Master’s thesis, University of Gothenburg, Chalmers University of Technology, Department of Com- puter Science and Engineering, G¨oteborg, Sweden, 2012. To appear, http://ekblad.cc/hastereport.pdf.

[38] C. Elliot. Functional images. In J. Gibbons and O. de Moor, editors, The fun of programming, pages 131–150. Palgrave Macmillan, 2003.

[39] C. Elliot and P. Hudak. Functional Reactive Animation. In Proceedings Interna- tional Conference on Functional Programming, ICFP ’97, pages 263–273, Amster- dam, Netherlands, June 1997.

[40] C. Elliott and P. Hudak. Functional reactive animation. In International Confer- ence on Functional Programming, 1997.

[41] C. M. Elliott. Tangible functional programming. pages 59–70, 2007.

[42] C. M. Elliott. Push-pull functional reactive programming. In Proceedings of the 2Nd ACM SIGPLAN Symposium on Haskell, Haskell ’09, pages 25–36, New York, NY, USA, Sept. 2009. ACM.

[43] M. Felleisen, R. Findler, M. Flatt, and S. Krishnamurthi. A Functional I/O Sys- tem * or, Fun for Freshman Kids. In Proceedings International Conference on Functional Programming, ICFP ’09, Edinburgh, Scotland, UK, 2009. ACM Press. [44] S. Finne and S. Peyton Jones. Composing Haggis. In Eurographics Workshop on Programming Paradigms in Graphics, pages 85–101, Maastricht, the Netherlands, 1995. Springer.

[45] S. Finne and S. Peyton Jones. Pictures: A Simple Structured Graphics Model. In D. Turner, editor, Proceedings of the 1995 Glasgow Workshop on Functional Programming, Ullapool, Scotland, July 10-12 1995. Electronic Workshops in Com- puting.

[46] S. Fowler, L. Denuzi`ere, and A. Granicz. Reactive single-page applications with dynamic dataflow. In Proceedings of the 17th International Symposium on Practical Aspects of Declarative Languages - Volume 9131, volume 9131 of PADL 2015, pages 58–73, New York, NY, USA, 2015. Springer-Verlag New York, Inc.

[47] J. Fuhs and J. Cannady. An automated approach in reverse engineering java appli- cations using petri nets. In SoutheastCon, 2004. Proceedings. IEEE, pages 469–487, Mar 2004.

[48] J. Gibbons and N. Wu. Folding domain-specific languages: Deep and shallow embeddings (functional pearl). In Proceedings of the 19th ACM SIGPLAN Inter- national Conference on Functional Programming, ICFP ’14, pages 339–347, New York, NY, USA, 2014. ACM.

[49] P. Graham. Hackers and painters - big ideas from the computer age. O’Reilly, 2004. [50] K. Hanna. Interactive visual functional programming. pages 145–156, 2002. [51] P. Henderson. Functional geometry. In D. Friedman and D. Wise, editors, Confer-

ence Record of the 1982 ACM Symposium on Lisp and Functional Programming, pages 179–187, Pittsburgh, Pennsylvania, 1982. ACM Press.

[52] P. Henderson. Functional geometry. Higher-Order and Symbolic Computation, 15(4):349–365, Dec. 2002.

[53] J. Henrix, R. Plasmeijer, and P. Achten. Gin: A graphical language and tool for defining itask workflows. pages 163–178, 2012.

[54] J. Hindley. The principal type-scheme of an object in combinatory logic. Transac- tions of the American Mathematical Society, 146:29–60, December 1969.

[55] M. Hofmann, B. Pierce, and D. Wagner. Symmetric lenses. SIGPLAN Not., 46(1):371–384, Jan. 2011.

[56] P. Hudak. Conception, evolution, and application of functional programming lan- guages. ACM Comput. Surv., 21(3):359–411, Sept. 1989.

[57] P. Hudak. Building domain-specific embedded languages. ACM Comput. Surv., 28(4es), Dec. 1996.

[58] P. Hudak, A. Courtney, H. Nilsson, and J. Peterson. Arrows, robots, and functional reactive programming. In J. Jeuring and S. Peyton Jones, editors, Proceedings of the 4th International Summer School on Advanced Functional Programming, AFP ’03, volume 2638 of Lecture Notes in Computer Science, pages 159–187. Oxford, UK, Springer-Verlag, 2003.

[59] J. Hughes. Why functional programming matters. The Computer Journal, 32(2):98–107, 1989.

[60] image.rkt, Dec 2014.

[61] J. M. Jansen. Functional Web Applications, Implementation and Use of Client-Side Interpreters. PhD thesis, Radboud University Nijmegen, 2010.

[62] P. Jansson and J. Jeuring. PolyP — a polytypic programming language exten- sion. In Conference Record of POPL ’97: The 24th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 470–482. ACM Press, 1997.

[63] S. P. Jones. Haskell 98 Language and Libraries: The Revised Report. Cambridge University Press, September 2002.

BIBLIOGRAPHY

[64] K. Kagawa. Compositional references for stateful functional programming. SIG- PLAN Not., 32(8):217–226, Aug. 1997.

[65] G. E. Krasner and S. T. Pope. A cookbook for using the model-view controller user interface paradigm in Smalltalk-80. Journal of Object-Oriented Programming, 1(3):26–49, Aug. 1988.

[66] D. Leijen. wxHaskell: a Portable and Concise GUI Library for Haskell. In Proceed- ings of the 2004 ACM SIGPLAN workshop on Haskell, Haskell ’04, pages 57–68, New York, NY, USA, 2004. ACM.

[67] D. Leijen. wxHaskell: a portable and concise GUI library for Haskell. In Proceedings of the 2004 ACM SIGPLAN workshop on Haskell, pages 57–68, Snowbird, Utah, USA, 2004. ACM.

[68] B. Lijnse. TOP to the Rescue – Task-Oriented Programming for Incident Response Applications. PhD thesis, Radboud University Nijmegen, 2013. ISBN 978-90- 820259-0-3.

[69] B. Lijnse, J. Jansen, and R. Plasmeijer. Incidone: A task-oriented incident coor- dination tool. In L. Rothkrantz, J. Ristvej, and Z. Franco, editors, Proceedings of the 9th International Conference on Information Systems for Crisis Response and Management, ISCRAM ’12, Vancouver, Canada, Apr. 2012.

[70] H. Mackenzie, V. Nazarov, and L. Stegeman. GHCJS: Haskell to JavaScript trans- lator. https://github.com/ghcjs/ghcjs/tree/gen2, 2012.

[71] R. Milner. A theory of type polymorphism in programming. Journal of Computer and System Sciences, 17(3):348–375, 1978.

[72] V. Nazarov. GHCJS: Haskell to Javascript compiler (via GHC). https://github.com/ghcjs/ghcjs, 2011.

[73] H. Nilsson, U. i. L. D. o. C. Science, and Information. Declarative Debugging for Lazy Functional Languages, 1998.

[74] H. Nilsson and J. Sparud. The Evaluation Dependence Tree as a Basis for Lazy Functional Debugging. Automated software engineering, 4(2):121–150, 1997. [75] Object Management Group. Business process model and notation (BPMN) version

1.2. Technical report, Object Management Group, 2009.

[76] Object Modeling Group. OMG Unified Modeling Language Specification. Technical report, Object Modeling Group, Mar. 2000.

[77] Object Modeling Group. OMG Unified Modeling Language (OMG UML), Infras- tructure. Technical report, Object Modeling Group, Mar. 2012.

[78] OMG. OMG Unified Modeling Language (OMG UML), Superstructure, Version 2.4.1, August 2011.

[79] M. Petre. Why looking isn’t always seeing: readership skills and graphical pro- gramming. Communications of the ACM, 38(6):33–44, 1995.

[80] C. A. Petri. Communication with Automata. Technical Report RADC-TR-65-377, Rome Air Development Center, Jan. 1966.

[81] S. Peyton Jones, editor. Haskell 98 language and libraries: the revised report. Cambridge University Press, 2003.

[82] M. Pil. Dynamic types and type dependent functions. In K. Hammond, T. Davie, and C. Clack, editors, Proceedings of the International Workshop on the Imple- mentation of Functional Languages, IFL ’98, London, UK, volume 1595 of LNCS, pages 169–185. Springer-Verlag, 1999.

[83] M. J. Plasmeijer, P. M. Achten, and P. W. M. Koopman. iTasks: executable specifications of interactive work flow systems for the web. In Proceedings of the 12th international conference on functional programming, ICFP’07, pages 141–152, Freiburg, Germany, Oct. 1-3, 2007. ACM Press.

[84] R. Plasmeijer, P. Achten, P. Koopman, B. Lijnse, T. Van Noort, and J. Van Gronin- gen. iTasks for a change: Type-safe run-time change in dynamically evolving work- flows. In PEPM ’11 : Proceedings Workshop on Partial Evaluation and Program Manipulation, PEPM ’11, Austin, TX, USA, pages 151–160, New York, 2011. ACM.

[85] R. Plasmeijer, J. M. Jansen, and P. Koopman. Declarative Ajax and Client Side Evaluation of Workflows using iTasks. In Principles and Practice of Declarative Programming, 2008.

[86] R. Plasmeijer, B. Lijnse, S. Michels, P. Achten, and P. Koopman. Task-Oriented Programming in a Pure Functional Language. In Proceedings of the 2012 ACM SIGPLAN International Conference on Principles and Practice of Declarative Pro- gramming, PPDP ’12, pages 195–206, Leuven, Belgium, Sept. 2012. ACM. [87] R. Plasmeijer and M. van Eekelen. Clean language report (version 2.1). http:

//clean.cs.ru.nl, 2002.

[88] J. Poswig, G. Vrankar, and C. Morara. VisaVis: a Higher-order Functional Visual Programming Language. Journal of Visual Languages & Computing, 5(1):83–111, Mar. 1994.

[89] H. J. Reekie. Visual Haskell: a first attempt. Technical report, Key Centre for Advanced Computing Sciences, 1994.

[90] C. Reinke. GHood–graphical visualisation and animation of Haskell object obser- vations. 2001 ACM SIGPLAN, 2001.

[91] M. Resnick, J. Maloney, A. Monroy-Hern´andez, N. Rusk, E. Eastmond, K. Bren- nan, A. Millner, E. Rosenbaum, J. Silver, B. Silverman, and Y. Kafai. Scratch: Programming for all. Commun. ACM, 52(11):60–67, Nov. 2009.

[92] M. Sage. FranTk - a declarative GUI language for Haskell. In Proceedings of the Fifth ACM SIGPLAN International Conference on Functional Programming, ICFP ’00, pages 106–117, New York, NY, USA, 2000. ACM.

[93] M. Serrano, E. Gallesio, and F. Loitsch. Hop, a language for programming the web 2.0. In Proceedings of the 11th International Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA ’06, pages 975– 985, Portland, Oregon, USA, 22-26, Oct. 2006.

[94] N. C. Shu. Visual Programming Languages: A Perspective and a Dimensional Analysis, pages 11–34. Springer US, Boston, MA, 1986.

[95] J. Sparud and C. Runciman. Complete and partial redex trails of functional com- putations. In Implementation of Functional Languages, pages 160–177. Springer Berlin Heidelberg, Sept. 1997.

[96] J. Sparud and C. Runciman. Tracing lazy functional computations using redex trails. pages 291–308, 1997.

[97] T. Steenvoorden, J. Stutterheim, E. Barendsen, and R. Plasmeijer. Visual Sup- port for Learning Monads. Technical Report ICIS–R17001, Radboud University Nijmegen, January 2017.

[98] J. Stutterheim, R. Plasmeijer, and P. Achten. Tonic: An Infrastructure to Graphi- cally Represent the Definition and Behaviour of Tasks. In J. Hage and J. McCarthy, editors, Trends in Functional Programming, volume 8843 of Lecture Notes in Com- puter Science, pages 122–141. Springer Berlin Heidelberg, 2014.

[99] J. Stutterheim, R. Plasmeijer, and P. Achten. Static and dynamic visualisations of monadic programs. In Implementation and Application of Functional Languages. ACM, 2016.

[100] J. Stutterheim, W. Swierstra, and D. Swierstra. Forty hours of declarative pro- gramming: Teaching Prolog at the Junior College Utrecht. Electronic Proceedings in Theoretical Computer Science, 106:50–62, Jan. 2013.

[101] W. Swierstra, S. D. Swierstra, and J. Stutterheim. Logisch en Functioneel Program- meren voor Wiskunde D. Technical Report UU-CS-2011-033, Universiteit Utrecht, 2011.

[102] P. Thiemann. WASH/CGI: server-side web scripting with sessions and typed, com- positional forms. In S. Krishnamurthi and R. Ramakrishnan, editors, Proceedings of the 4th International Symposium on the Practical Aspects of Declarative Pro- gramming, PADL ’02, volume 2257 of Lecture Notes in Computer Science, pages 192–208, Portland, OR, USA, 19-20, Jan. 2002. Springer-Verlag.

[103] P. Wadler. Monads for functional programming. In Advanced Functional Pro- gramming, First International Spring School on Advanced Functional Programming Techniques-Tutorial Text, pages 24–52, London, UK, UK, 1995. Springer-Verlag. [104] Z. Wan and P. Hudak. Functional reactive programming from first principles.

In Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation, PLDI ’00, pages 242–252, New York, NY, USA, 2000.