Skip to main content Accessibility help
×
Home
Hostname: page-component-79b67bcb76-c2bf7 Total loading time: 0.246 Render date: 2021-05-13T23:18:55.797Z Has data issue: true Feature Flags: { "shouldUseShareProductTool": true, "shouldUseHypothesis": true, "isUnsiloEnabled": true, "metricsAbstractViews": false, "figures": false, "newCiteModal": false, "newCitedByModal": true, "newEcommerce": true }

Implementing a functional spreadsheet in clean

Published online by Cambridge University Press:  07 November 2008

Walter A. C. A. J De Hoon
Affiliation:
Computing Science Institute, University of Nijmegen, Toernooiveld 1, 6525 ED Nijmegen, The Netherlands (e-mail: marko@cs.kun.nl)
Luc M. W. J Rutten
Affiliation:
Computing Science Institute, University of Nijmegen, Toernooiveld 1, 6525 ED Nijmegen, The Netherlands (e-mail: marko@cs.kun.nl)
Marko C. J. D van Eekelen
Affiliation:
Computing Science Institute, University of Nijmegen, Toernooiveld 1, 6525 ED Nijmegen, The Netherlands (e-mail: marko@cs.kun.nl)
Corresponding
E-mail address:

Abstract

It has been claimed that recent developments in the research on the efficiency of code generation and on graphical input/output interfacing have made it possible to use a functional language to write efficient programs that can compete with industrial applications written in a traditional imperative language. As one of the early steps in verifying this claim, this paper describes a first attempt to implement a spreadsheet in a lazy, purely functional language. An interesting aspect of the design is that the language with which the user specifies the relations between the cells of the spreadsheet is itself a lazy, purely functional and higher order language as well, and not some special dedicated spreadsheet language. Another interesting aspect of the design is that the spreadsheet incorporates symbolic reduction and normalisation of symbolic expressions (including equations). This introduces the possibility of asking the system to prove equality of symbolic cell expressions: a property which can greatly enhance the reliability of a particular user-defined spreadsheet. The resulting application is by no means a fully mature product. It is not intended as a competitor to commercially available spreadsheets. However, with its higher order lazy functional language and its symbolic capabilities it may serve as an interesting candidate to fill the gap between calculators with purely functional expressions and full-featured spreadsheets with dedicated non-functional spreadsheet languages. This paper describes the global design and important implementation issues in the development of the application. The experience gained and lessons learnt during this project are discussed. Performance and use of the resulting application are compared with related work.

Type
Research Article
Copyright
Copyright © Cambridge University Press 1995

Access options

Get access to the full version of this content by using one of the access options below.

References

Achten, P. M. and Plasmeijer, M. J. (1995) The Ins and Outs of Clean I/O. J. Functional Programming 5(1), pp. 81110.CrossRefGoogle Scholar
Barendregt, H. P., van Eekelen, M. C. J. D.Glauert, J. R. W., Kennaway, J. R., Plasmeijer, M. J. and Sleep, M. R. (1987) Term Graph Rewriting. In: de Bakker, J. W., Nijman, A. J. and Treleaven, P. C. eds., Proc. Parallel Architectures and Languages Europe, Eindhoven, The Netherlands. Lecture Notes in Computer Science Vol, 259, pp. 141158. Springer-Verlag.CrossRefGoogle Scholar
Barendsen, E. and Smetsers, J. E. W. (1993) Conventional and Uniqueness Typing in Graph Rewrite Systems (extended abstract). In: Shyamasundar, R. K., ed., Proc. 13th Conference on the Foundations of Software Technology and Theoretical Computer Science,Bombay, India,December1517. Lecture Notes in Computer Science Vol 761, pp. 4151. Springer-Verlag.Google Scholar
Boon, J. (1994) A Purely Functional Spreadsheet. Third Year Project Report. University of York, UK.Google Scholar
Brus, T., van Eekelen, M. C. J. D., van Leer, M. O. and Plasmeijer, M. J. (1987) Clean: A Language for Functional Graph Rewriting. In: Kahn, G., ed., Proc. 3rd International Conference on Functional Programming Languages and Computer Architecture,Portland, Oregon, USA.Google Scholar
Carlsson, M. and Hallgren, Th. (1993) Fudgets – A Graphical User Interface in a Lazy Functional Language. In: Proc. Conference on Functional Programming Languages and Computer Architecture,Copenhagen, Denmark, pp. 321330. ACM Press.Google Scholar
Cartwright, R. and Boehm, B. (1990) Exact Real Arithmetic, formulating real numbers as functions. In: Turner, D. A., ed., Research Topics in Functional Programming, University of Texas at Austin Year of Programming Series, pp. 4364. Addison Wesley.Google Scholar
Casimir, and Rommert, (1992) Real Programmers Don't Use Spreadsheets. ACM SIGPLAN Notices 27(6): 1016.CrossRefGoogle Scholar
Du, W. and Wadge, W. W. (1990) The Eductive Implementation of a Three-Dimensional Spreadsheet. Software - Practice and Experience 20(11): 10971114.Google Scholar
Harvey, B. and Wright, M. (1994) Simply Scheme: Introducing Computer Science. MIT Press.Google Scholar
de Hoon, W. A. C. A. J. (1993) Designing a spreadsheet in a pure functional graph rewriting language. Computer Science Master Thesis 300, University of Nijmegen, The Netherlands.Google Scholar
de Hoon, W. A. C. A. J., Rutten, L. M. W. J. and van Eekelen, M. C. J. D. (1994) FunSheet: A Functional Spreadsheet. In: Proc. 6th International Workshop on the Implementation of Functional Languages,Norwich, UK, pp. 11.111.24.Google Scholar
Litecky, C. (1990) Spreadsheet Macro Programming: a Critique with Emphasis on Lotus 1-2-3. J. Systems and Software 13(3): 197200.CrossRefGoogle Scholar
Nöcker, E. G. J. M. H., Smetsers, J. E. W., van Eekelen, M. C. J. D. and Plasmeijer, M. J. (1991) Concurrent Clean. In: Aarts, E. H. L., van Leeuwen, J. and Rem, M., eds., Proc: Parallel Architectures and Languages Europe, Eindhoven, The Netherlands, pp. 202219. Springer-Verlag.Google Scholar
Peyton Jones, S. L. and Wadler, P. (1993) Imperative Functional Programming. In: Proc. 20th Annual ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages,Charleston, SC, pp. 7184.CrossRefGoogle Scholar
Plasmeijer, M. J. and van Eekelen, M. C. J. D. (1993) Functional Programming and Parallel Graph Rewriting. Addison-Wesley.Google Scholar
Plasmeijer, M. J. and van Eekelen, M. C. J. D. (1995) Clean 1.0 Reference Manual. Technical Report, University of Nijmegen, The Netherlands (in preparation), draft available at http://www.cs.kun.nl/nclean.Google Scholar
Pountain, D. (1994) Functional Programming Comes of Age. Byte Magazine 19(8): 183184.Google Scholar
Smetsers, J. E. W., Barendsen, E., van Eekelen, M. C. J. D. and Plasmeijer, M. J. (1993) Guaranteeing Safe Destructive Updates through a Type System with Uniqueness Information for Graphs. In: Schneider, H. J. and Ehrig, H., eds., Proc. Workshop Graph Transformations in Computer Science, Schloss Dagstuhl, Germany. Lecture Notes in Computer Science Vol 776. Springer-Verlag.Google Scholar
Turner, D. A. (1990) An Approach to Functional Operating Systems. In: Turner, D. A. (editor), Research topics in Functional Programming, pp. 199217. Addison-Wesley Publishing Company.Google Scholar
Vuillemin, J. (1987). Arithmétic réelle exacte par les fractions continues. Technical Report 760, INRIA, France.Google Scholar
Wray, S. C. and Fairbairn, J. (1989) Non-strict languages – Programming and Implementation. The Computer Journal 32(2): 142151.CrossRefGoogle Scholar
Yoder, A. and Cohn, D. L. (1994) Real Spreadsheets for Real Programmers. Technical Report 94–9, University of Notre Dame.Google Scholar
Submit a response

Discussions

No Discussions have been published for this article.

Send article to Kindle

To send this article to your Kindle, first ensure no-reply@cambridge.org is added to your Approved Personal Document E-mail List under your Personal Document Settings on the Manage Your Content and Devices page of your Amazon account. Then enter the ‘name’ part of your Kindle email address below. Find out more about sending to your Kindle. Find out more about sending to your Kindle.

Note you can select to send to either the @free.kindle.com or @kindle.com variations. ‘@free.kindle.com’ emails are free but can only be sent to your device when it is connected to wi-fi. ‘@kindle.com’ emails can be delivered even when you are not connected to wi-fi, but note that service fees apply.

Find out more about the Kindle Personal Document Service.

Implementing a functional spreadsheet in clean
Available formats
×

Send article to Dropbox

To send this article to your Dropbox account, please select one or more formats and confirm that you agree to abide by our usage policies. If this is the first time you use this feature, you will be asked to authorise Cambridge Core to connect with your <service> account. Find out more about sending content to Dropbox.

Implementing a functional spreadsheet in clean
Available formats
×

Send article to Google Drive

To send this article to your Google Drive account, please select one or more formats and confirm that you agree to abide by our usage policies. If this is the first time you use this feature, you will be asked to authorise Cambridge Core to connect with your <service> account. Find out more about sending content to Google Drive.

Implementing a functional spreadsheet in clean
Available formats
×
×

Reply to: Submit a response


Your details


Conflicting interests

Do you have any conflicting interests? *