Skip to main content
    • Aa
    • Aa

An incremental, exploratory and transformational environment for lazy functional programming

  • Colin Runciman (a1), Ian Toyn (a1) and Mike Firth (a1)

Most programming environments for functional languages offer a single tool used to evaluate programs – either a batch compiler or an interpreter with a read-eval-print loop. This paper presents a programming environment that supports not only evaluation, but also a range of other programming activities including transformation. The environment is designed to encourage working in an incremental and exploratory style, avoiding constraints on the order in which things must be done yet guarenteeing security. What has already been done towards the development of a program automatically persists, as does information about what has yet to be done. For instance, new laws can be introduced as conjectures and used in program transformation, but full details of proof obligations and dependencies are maintained.

The paper outlines the functional language supported by the environment, and uses an extended example to illustrate program construction, execution, tracing, modification and transformation.

Linked references
Hide All

This list contains references from the content that can be linked to their source. For a full set of references and notes please see the PDF or HTML where available.

R. M. Burstall and J. Darlington 1977. A transformation system for developing recursive programs. J. ACM, 24 (1): 4467.

J. Darlington 1989. A functional programming environment supporting execution, partial execution and transformation. In PARLE ‘89, Parallel Architectures and Languages Europe, Springer-Verlag, pp. 286305.

J. Fairbairn and S. Wray 1987. TIM: a simple, lazy abstract machine to execute supercombinators. In G. Kahn (editor) Functional Programming Languages and Computer Architecture, Springer-Verlag, pp. 3445.

M. S. Feather 1987. A system for assisting program transformation. ACM Transactions on Programming Languages and Systems, 4 (1): 120.

M. J. C. Gordon , R. Milner and C. P. Wadsworth 1979. Edinburgh LCF. Springer-Verlag.

T. Johnsson 1984. Efficient compilation of lazy evaluation. ACM SIGPLAN Notices, 19 (6): 5869.

J. T. O'Donnell and C. V. Hall 1988. Debugging in applicative languages. Lisp and Symbolic Computation, 1 (2).

S. L. Peyton Jones 1988. FLIC – a Functional Language Intermediate Code. ACM SIGPLAN Notices, 23 (8): 3048.

C. Runciman 1989. What about the natural numbers? Computer Languages 14 (3): 181191.

C. Runciman , M. Firth and N. Jagger 1990. Transformation in a non-strict language: an approach to instantiation. In Proc. Glasgow Workshop on Functional Programming, Springer-Verlag, pp. 133141.

R. M. Snyder 1990. Lazy debugging of lazy functional programs. New Generation Computing, 8 (2): 139161.

W. F. Tichy 1985. RCS – a system for version control. Software – Practice and Experience, 15 (7): 637654.

I. Toyn and C. Runciman 1986. Adapting combinator and SECD machines to display snapshots of functional computations. J. New Generation Computing, 4: 339363.

D. A. Turner 1979. A new implementation technique for applicative languages. Software – Practice and Experience 9 (1): 3149.

D. A. Turner 1985. Miranda: a non-strict functional language with polymorphic types. In J.-P. Jouannaud (editor), Functional Programming Languages and Computer Architecture, Volume 201 of Lecture Notes in Computer Science. Springer-Verlag, pp. 116.

P. Wadler 1985. How to replace failure by a list of successes. In Proc. 2nd ACM Conf. on Functional Programming Languages and Computer Architecture, Springer-Verlag, pp. 113128.

Recommend this journal

Email your librarian or administrator to recommend adding this journal to your organisation's collection.

Journal of Functional Programming
  • ISSN: 0956-7968
  • EISSN: 1469-7653
  • URL: /core/journals/journal-of-functional-programming
Please enter your name
Please enter a valid email address
Who would you like to send this to? *


Full text views

Total number of HTML views: 0
Total number of PDF views: 3 *
Loading metrics...

Abstract views

Total abstract views: 33 *
Loading metrics...

* Views captured on Cambridge Core between September 2016 - 20th September 2017. This data will be updated every 24 hours.