ABSTRACT
The Fudgets system is a toolkit for developing graphical applications in the lazy functional programming language Haskell. In this paper we develop an operational semantics for a subset of this system, inspired by ideas from concurrency theory. A semantic theory based on bisimulation is defined and shown to be a congruence. We consider two applications of this theory: firstly, some equational rules useful for reasoning about Fudget programs are verified; secondly, we show how the operational semantics can be used to check the correctness of implementations of the Fudgets system.
- 1.E. Astesiano, A. Giovini, and G. Reggio. Generalized bisimulation in relational specification. In Proceedings of Symposium on Theoretical Aspects of Computer Science, volume 294 of Lecture Notes in Computer Science, pages 207-226. Springer-Verlag, 1988. Google ScholarDigital Library
- 2.G. Boudol. Towards a lambda calculus for concurrent and communicating systems. In TAPSOFT '8g, volume 351 of LNCS, pages 149-161, 1989. Google Scholar
- 3.M. Carlsson and T. Hallgren. Programming with fudgets. Available by anonymous FTP from pub/users/hallgren on ftp.cs.chalmers.se., December 1994.Google Scholar
- 4.M. Carlsson and T. Hallgren. The Fudget Library distribution. Available by anonymous FTP from pub/haskell/chalmers on ftp. ca. chalmers, se., 1995.Google Scholar
- 5.M. Carlsson and T. Hallgren. Fudgets - Purely Functional Processes with applications to Graphical User Interfaces. PhD thesis, Department of Computing Science, Chalmers University of Technology, 1998.Google Scholar
- 6.W. Ferreira, M. Hennessy, and A. Jeffrey. A theory of weak bisimulation for core cml. Computer Science Technical Report 95:05, School of Cognitive and Computing Sciences, University of Sussex, 1995.Google Scholar
- 7.S. Finne and S. L. P. Jones. Composing Haggis. In Eurographics Workshop on Programming Paradigms in Computer Graphics, April 1995.Google Scholar
- 8.S. Finne and S. L. P. Jones. Concurrent Haskell. In Proceedings of the Twenty Third A CM Symposium on Principles of Programming Languages (POPL), 1996. Google ScholarDigital Library
- 9.A. D. Gordon. Functional Programming and Input/Output. PhD thesis, University of Cambridge, August 1992.Google ScholarDigital Library
- 10.A. D. Gordon. Bisimilarity as a theory of functional programming. Mini-course. BRICS Notes Series NS- 95-3, Brics, Aarhus University, 1995. Extended version of MFPS'95 and Glasgow FP'94 papers.Google Scholar
- 11.T. Hallgren and M. Carlsson. Programming with Fudgets. In J. Jeuring and E. Meijer, editors, Advanced Functional Programming, volume 925 of Lecture Notes in Computer Science, pages 137-182. Springer Verlag, May 1995. Google ScholarDigital Library
- 12.D. J. Howe. Equality in lazy computation systems. In Proceedings of the Fourth IEEE Symposium on Logic in Computer Science, pages 198-203, 1989. Google ScholarDigital Library
- 13.G. Kahn. A preliminary theory for parallel programs. Rapport de Recherche 6, IRIA, January 1973.Google Scholar
- 14.K. Karlsson. Nebula: A functional operating system. Technical report, Programming Methodology Group, Chalmers University of Technology and University of Gothenburg, 1981.Google Scholar
- 15.P. Landin. A correspondence between algol 60 and church's lambda-notation: Part i and ii. In Communications of the A CM, volume 8, pages 89-101,158-165, February and March 1965. Google ScholarDigital Library
- 16.R. Milner. Communication and Concurrency. Prentice Hall, 1985. Google ScholarDigital Library
- 17.R. Milner. Functions as processes. Research Report No. 1154, INRIA, February 1990.Google Scholar
- 18.R. Milner. The polyadic rr-calculus: a tutorial. Technical Report ECS--LFCS-91-180, Laboratory for Foundations of Computer Science, Department of Computer Science, University of Edinburgh, UK, October 1991.Google Scholar
- 19.R. Milner, J. Paxrow, and D. Walker. A calculus of mobile processes, parts I and II. Technical Report ECS- LFCS-89-85 and 86, Department of Computer Science, The University of Edinburgh, 1989.Google Scholar
- 20.R. Milner and M. Tofte. Co-induction in relational semantics. In Theoretical Computer Science, volume 87, pages 209-220, September 1990. Google ScholarDigital Library
- 21.R. D. Nicola and M. C. B. Hennessy. Testing equivalences for processes. Theoretical Computer Science, 34:73-133, 1984.Google ScholarCross Ref
- 22.R. Noble. Lazy Functional Components for Graphical User Interfaces. PhD thesis, Dept. of Computer Science, University of York, November 1995.Google Scholar
- 23.D. M. Park. Concurrency on automata and infinite sequences. In Conference on Theoretical Computer Science, volume 104 of Lecture Notes in Computer Science. Springer-Verlag, 1981. Google ScholarDigital Library
- 24.J. Peterson and K. Hammond. Report on the Programming Language HaskeU, A Non-strict, Purely Functional Language (Version 1.3). Technical Report YALEU/DCS/RR-1106, Yale University, Department of Computer Science, May 1996.Google Scholar
- 25.B. C. Pierce and D. N. Turner. Pict: A programming language based on the pi-calculus. Technical Report CSC1476, Computer Science Department, Indiana University, 1997.Google ScholarDigital Library
- 26.A. M. Pitts. A co-induction principle for recursively defined domains. Theoretical Computer Science, 124:195- 219, 1994. Google ScholarDigital Library
- 27.G. D. Plotkin. A structural approach to operational semantics. Technical Report FN-19, DAIMI, Aarhus University, September 1981.Google Scholar
- 28.P. Sewell. On implementations and semantics of a concurrent programming language. In A. Mazurkiewicz and J. Winkowski, editors, Proceedings of CONCUR '97. LNCS 12~3, pages 391-405. Springer-Verlag, 1997. Google ScholarDigital Library
- 29.C. J. Taylor. Formalising and Reasoning about Furlgets. Ph.d. thesis, Department of Computer Science, University of Nottingham, To appear.Google Scholar
- 30.B. Thomsen. Calculi for Higher Order Communicating Systems. Ph.d. thesis, Department of Computing, Imperial College, 1990.Google Scholar
- 31.P. Wadler. The essence of functional programing (invited talk). In Proceedings of the Nineteenth A CM Symposium on Principles of Programming Languages (POPL), pages 1-14, January 1992. Google ScholarDigital Library
Index Terms
- A theory of core fudgets
Recommendations
A theory of core fudgets
The Fudgets system is a toolkit for developing graphical applications in the lazy functional programming language Haskell. In this paper we develop an operational semantics for a subset of this system, inspired by ideas from concurrency theory. A ...
Erratic fudgets: a semantic theory for an embedded coordination language
Special issue on coordination languages and architecturesThe powerful abstraction mechanisms of functional programming languages provide the means to develop domain-specific programming languages within the language itself. Typically, this is realised by designing a set of combinators (higher-order reusable ...
Erratic Fudgets: A Semantic Theory for an Embedded Coordination Language
COORDINATION '99: Proceedings of the Third International Conference on Coordination Languages and ModelsThe powerful abstraction mechanisms of functional programming languages provide the means to develop domain-specific programming languages within the language itself. Typically, this is realised by designing a set of combinators (higher-order reusable ...
Comments