Skip to main content

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 2757))

Abstract

Taking functional programming to its extremities in search of simplicity still requires integration with other development (e.g. formal) methods. Induction is the key to deriving and verifying functional programs, but can be simplified through packaging proofs with functions, particularly “folds”, on data (structures). “Totally Functional Programming” avoids the complexities of interpretation by directly representing data (structures) as “platonic combinators” – the functions characteristic to the data. The link between the two simplifications is that platonic combinators are a kind of partially-applied fold, which means that platonic combinators inherit fold-theoretic properties, but with some apparent simplifications due to the platonic combinator representation. However, despite observable behaviour within functional programming that suggests that TFP is widely-applicable, significant work remains before TFP as such could be widely adopted.

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

Access this chapter

eBook
USD 16.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 16.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. Turner, D.A.: Miranda - a non-strict functional language with polymorphic types. In: Jouannaud, J.-P. (ed.) FPCA 1985. LNCS, vol. 201, pp. 1–16. Springer, Heidelberg (1985)

    Google Scholar 

  2. Hughes, J.: Why Functional Programming Matters. The Computer Journal 32(2), 98–107 (1989)

    Article  Google Scholar 

  3. Bird, R.: Introduction to Functional Programming. Prentice-Hall, Englewood Cliffs (2000)

    Google Scholar 

  4. http://www.haskell.org

  5. Hutton, G.: A Tutorial on the Universality and Expressiveness of Fold. Journal of Functional Programming 9(4), 355–372 (1999)

    Article  MATH  MathSciNet  Google Scholar 

  6. Barendregt, H.P.: The Lambda Calculus - Its Syntax and Semantics. North-Holland, Amsterdam (1984)

    MATH  Google Scholar 

  7. Aho, A.V., Ullman, J.D.: The Theory of Parsing, Translation and Compiling. Prentice-Hall, Englewood Cliffs (1972)

    Google Scholar 

  8. Hutton, G.: Parsing Using Combinators. In: Proc. Glasgow Workshop on Functional Programming. Springer, Heidelberg (1989)

    Google Scholar 

  9. Boehm, H., Cartwright, R.: Exact Real Arithmetic: Formulating Real Numbers as, Functions. In: Turner, D.A. (ed.) Research Topics in Functional Programming, pp. 43–64. Addison-Wesley, Reading (1990)

    Google Scholar 

  10. Sheard, T., Fougaras, L.: A fold for all seasons. In: Proc. ACM Conference on Functional Programming and Computer Architecture. Springer, Heidelberg (1993)

    Google Scholar 

  11. Milner, R.: A Theory of Type Polymorphism in Programming. J. Comp. Syst. Scs. 17, 348–375 (1977)

    Article  MathSciNet  Google Scholar 

  12. Reynolds, J.C.: Three approaches to type structure. In: Nivat, M., Floyd, C., Thatcher, J., Ehrig, H. (eds.) CAAP 1985 and TAPSOFT 1985. LNCS, vol. 185. Springer, Heidelberg (1985)

    Google Scholar 

  13. Jones, M.P.: First-class Polymorphism with Type Inference. In: Proc. 24th ACM Symposium on Principles of Programming Languages (1997)

    Google Scholar 

  14. Peyton Jones, S.: The Implementation of Functional Programming Languages. Prentice-Hall International, Hemel Hempstead (1987)

    MATH  Google Scholar 

  15. Royer, J.S., Case, J.: Subrecursive Programming Systems: Complexity & Succintness. Birkhauser, Basel (1994)

    Google Scholar 

  16. Turner, D.A.: Elementary Strong Functional Programming. In: Hartel, P.H., Plasmeijer, R. (eds.) FPLE 1995. LNCS, vol. 1022, pp. 1–13. Springer, Heidelberg (1995)

    Google Scholar 

  17. Backus, J.: Can programming be liberated from the von Neumann style? A functional style and its algebra of programs. Comm. ACM 21(8), 613–641 (1978)

    Article  MATH  MathSciNet  Google Scholar 

  18. Bailes, P.A.: The Programmer as Language Designer (Towards a Unified Theory of Programming and Language Design). In: Proceedings of the 1986 Australian Software Engineering Conference, Canberra, pp. 14–18 (1986)

    Google Scholar 

  19. Bailes, P.A., Chorvat, T., Peake, I.: A Formal Basis for the Perception of Programming as a Language Design Activity. In: Proc. 1994 International Conference on Computing and Information, Peterborough (1994)

    Google Scholar 

  20. Plotkin, G.D.: PCF Considered as a Programming Language. Theoretical Computer Science 5, 223–255 (1977)

    Article  MathSciNet  Google Scholar 

  21. Chikofsky, E., Cross II, J.H.: Reverse engineering and design recovery: a taxonomy. IEEE Software, 13–17 (January 1990)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2003 Springer-Verlag Berlin Heidelberg

About this chapter

Cite this chapter

Bailes, P.A., Kemp, C.J.M. (2003). Formal Methods within a Totally Functional Approach to Programming. In: Aichernig, B.K., Maibaum, T. (eds) Formal Methods at the Crossroads. From Panacea to Foundational Support. Lecture Notes in Computer Science, vol 2757. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-40007-3_18

Download citation

  • DOI: https://doi.org/10.1007/978-3-540-40007-3_18

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-20527-2

  • Online ISBN: 978-3-540-40007-3

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics