Skip to main content Accessibility help
×
Home

Implementing a functional spreadsheet in clean

  • Walter A. C. A. J De Hoon (a1), Luc M. W. J Rutten (a1) and Marko C. J. D van Eekelen (a1)

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.

Copyright

References

Hide All
Achten, P. M. and Plasmeijer, M. J. (1995) The Ins and Outs of Clean I/O. J. Functional Programming 5(1), pp. 81110.
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.
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.
Boon, J. (1994) A Purely Functional Spreadsheet. Third Year Project Report. University of York, UK.
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.
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.
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.
Casimir, and Rommert, (1992) Real Programmers Don't Use Spreadsheets. ACM SIGPLAN Notices 27(6): 1016.
Du, W. and Wadge, W. W. (1990) The Eductive Implementation of a Three-Dimensional Spreadsheet. Software - Practice and Experience 20(11): 10971114.
Harvey, B. and Wright, M. (1994) Simply Scheme: Introducing Computer Science. MIT Press.
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.
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.
Litecky, C. (1990) Spreadsheet Macro Programming: a Critique with Emphasis on Lotus 1-2-3. J. Systems and Software 13(3): 197200.
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.
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.
Plasmeijer, M. J. and van Eekelen, M. C. J. D. (1993) Functional Programming and Parallel Graph Rewriting. Addison-Wesley.
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.
Pountain, D. (1994) Functional Programming Comes of Age. Byte Magazine 19(8): 183184.
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.
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.
Vuillemin, J. (1987). Arithmétic réelle exacte par les fractions continues. Technical Report 760, INRIA, France.
Wray, S. C. and Fairbairn, J. (1989) Non-strict languages – Programming and Implementation. The Computer Journal 32(2): 142151.
Yoder, A. and Cohn, D. L. (1994) Real Spreadsheets for Real Programmers. Technical Report 94–9, University of Notre Dame.

Implementing a functional spreadsheet in clean

  • Walter A. C. A. J De Hoon (a1), Luc M. W. J Rutten (a1) and Marko C. J. D van Eekelen (a1)

Metrics

Full text views

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

Abstract views

Total abstract views: 0 *
Loading metrics...

* Views captured on Cambridge Core between <date>. This data will be updated every 24 hours.

Usage data cannot currently be displayed

Implementing a functional spreadsheet in clean

  • Walter A. C. A. J De Hoon (a1), Luc M. W. J Rutten (a1) and Marko C. J. D van Eekelen (a1)
Submit a response

Discussions

No Discussions have been published for this article.

×

Reply to: Submit a response


Your details


Conflicting interests

Do you have any conflicting interests? *