Skip to main content

Sheet-Defined Functions: Implementation and Initial Evaluation

  • Conference paper
End-User Development (IS-EUD 2013)

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 7897))

Included in the following conference series:

Abstract

Spreadsheets are ubiquitous end-user programming tools, but lack even the simplest abstraction mechanism: The ability to encapsulate a computation as a function. This was observed by Peyton-Jones and others [14], who proposed a mechanism to define such functions using only standard spreadsheet cells, formulas and references.

This paper extends their work by increasing expressiveness and emphasizing execution speed of the functions thus defined. First, we support recursive and higher-order functions, while still using only standard spreadsheet notation. Secondly, we obtain fast execution by a careful choice of data representation and compiler technology.

The result is a concept of sheet-defined functions that should be understandable to most spreadsheet users, yet offer sufficient programming power and performance to make end-user development of function libraries practical and attractive.

We outline a prototype implementation Funcalc of sheet-defined functions, and provide a case study with some evidence that it can express many important functions while maintaining good performance.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Abramson, D., Roe, P., Kotler, L., Mather, D.: Activesheets: Super-computing with spreadsheets. In: 2001 High Performance Computing Symposium (HPC 2001), Seattle, USA, pp. 110–115 (2001)

    Google Scholar 

  2. Bolognese, L.: Excel financial functions for .NET. MSDN webpage (2009), http://archive.msdn.microsoft.com/FinancialFunctions

  3. Chandy, M.: Concurrent programming for the masses (PODC 1984 invited address). In: Principles of Distributed Computing 1985, pp. 1–12. ACM (1985)

    Google Scholar 

  4. Cortes, D.S., Hansen, M.: User-defined functions in spreadsheets. Master’s thesis, IT University of Copenhagen (September 2006)

    Google Scholar 

  5. Dershowitz, N., Reingold, E.M.: Calendrical calculations, 3rd edn. Cambridge University Press (2008)

    Google Scholar 

  6. Ecma TC39 TG3. Common Language Infrastructure (CLI). Standard ECMA-335, 6th edition. Ecma International (June 2012)

    Google Scholar 

  7. Hart, J., et al.: Computer Approximations. Wiley (1968)

    Google Scholar 

  8. IEEE. IEEE standard for floating-point arithmetics. IEEE Std 754-2008 (2008)

    Google Scholar 

  9. Leroy, X.: The effectiveness of type-based unboxing. In: Types in Compilation Workshop, Amsterdam (1997)

    Google Scholar 

  10. McCarthy, J., et al.: Lisp 1.5 Programmer’s Manual. MIT Press (1962)

    Google Scholar 

  11. McGraw, J., et al.: Sisal. Streams and iteration in a single assignment language. Language reference manual, version 1.2. Technical report, Lawrence Livermore National Labs (March 1985)

    Google Scholar 

  12. Nuñez, F.: An extended spreadsheet paradigm for data visualisation systems, and its implementation. Master’s thesis, University of Cape Town (November 2000)

    Google Scholar 

  13. Peyton Jones, S.: The Implementation of Functional Programming Languages. Prentice-Hall (1987)

    Google Scholar 

  14. Peyton Jones, S., Blackwell, A., Burnett, M.: A user-centred approach to functions in Excel. In: ICFP 2003: Proceedings of the Eighth ACM SIGPLAN International Conference on Functional Programming, pp. 165–176. ACM (2003)

    Google Scholar 

  15. Resolver Systems. Resolver one. Homepage, http://www.resolversystems.com/

  16. Serpette, B., Serrano, M.: Compiling scheme to JVM bytecode: a performance study. In: International Conference on Functional Programming (ICFP 2002), pp. 259–270. ACM (2002)

    Google Scholar 

  17. Sestoft, P.: A Spreadsheet Core Implementation in C#. Technical Report ITU-TR-2006-91, IT University of Copenhagen, 135 pages (September 2006)

    Google Scholar 

  18. Sestoft, P.: Implementing function spreadsheets. Oral presentation, Fourth Workshop on End-User Software Engineering (WEUSE IV), Leipzig, Germany (May 2008), http://www.itu.dk/people/sestoft/papers/weuse-sestoft.pdf

  19. Sestoft, P.: Spreadsheet Technology. Version 0.12 of 2012-01-31. Technical Report ITU-TR-2011-142, IT University of Copenhagen (January 2012)

    Google Scholar 

  20. Strachey, C., Wadsworth, C.: Continuations: a mathematical semantics for handling full jumps. Higher Order and Symbolic Computation 13, 135–152 (1974); Reprint of Oxford PRG-11 (January 1974)

    Google Scholar 

  21. Sørensen, J.Z.: An evaluation of sheet-defined financial functions in Funcalc. Master’s thesis, IT University of Copenhagen (March 2012)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2013 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Sestoft, P., Sørensen, J.Z. (2013). Sheet-Defined Functions: Implementation and Initial Evaluation. In: Dittrich, Y., Burnett, M., Mørch, A., Redmiles, D. (eds) End-User Development. IS-EUD 2013. Lecture Notes in Computer Science, vol 7897. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-38706-7_8

Download citation

  • DOI: https://doi.org/10.1007/978-3-642-38706-7_8

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-642-38705-0

  • Online ISBN: 978-3-642-38706-7

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics