Skip to main content

Refactoring Functional Programs

  • Conference paper

Part of the book series: Lecture Notes in Computer Science ((LNTCS,volume 3622))

Abstract

Refactoring is the process of improving the design of existing programs without changing their functionality. These notes cover refactoring in functional languages, using Haskell as the medium, and introducing the HaRe tool for refactoring in Haskell.

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

Buying options

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

Learn about institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Burton, W., et al.: Views: An Extension to Haskell Pattern Matching. Proposed extension to Haskell, http://www.haskell.org/development/views.html

  2. The BlueJ system, http://www.bluej.org/

  3. Brandt, J., Roberts, D.: Refactory, http://st-www.cs.uiuc.edu/users/brant/Refactory/

  4. Diatchki, I.S., Jones, M.P., Hallgren, T.: A Formal Specification for the Haskell 98 Module System. In: ACM Sigplan Haskell Workshop (2002)

    Google Scholar 

  5. The Eclipse project, http://www.eclipse.org/

  6. Erwig, M., Ren, D.: Monadification of functional programs. Science of Computer Programming 52(1-3), 101–129 (2004)

    Article  MathSciNet  Google Scholar 

  7. Floyd, R.W.: The paradigms of programming. Commun. ACM 22(8), 455–460 (1979)

    Article  Google Scholar 

  8. Fowler, M.: Refactoring: Improving the Design of Existing Code. Object Technology Series. Addison-Wesley, Reading (2000)

    MATH  Google Scholar 

  9. Griswold, W.G., Notkin, D.: Automated assistance for program restructuring. ACM Transactions on Software Engineering and Methodology 2 (1993)

    Google Scholar 

  10. The Haddock documentation system for Haskell, http://www.haskell.org/haddock

  11. Hallgren, T.: Haskell Tools from the Programatica Project (Demo Abstract). In: ACM Sigplan Haskell Workshop (2003)

    Google Scholar 

  12. The HaRe system, http://www.cs.kent.ac.uk/projects/refactor-fp/hare.html

  13. Lämmel, R.: Reuse by Program Transformation. In: Michaelson, G., Trinder, P. (eds.) Functional Programming Trends 1999 (2000) (intellect); Selected papers from the 1st Scottish Functional Programming Workshop

    Google Scholar 

  14. Liang, S., Hudak, P., Jones, M.: Monad transformers and modular interpreters. In: 22nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, San Francisco, California. ACM Press, New York (1995)

    Google Scholar 

  15. Lämmel, R., Jones, S.P.: Scrap your boilerplate: a practical design pattern for generic programming. In: Proceedings of the Workshop on Types in Language Design and Implementation. ACM, New York (2003)

    Google Scholar 

  16. Lämmel, R., Jones, S.P.: Scrap more boilerplate: reflection, zips, and generalised casts. In: Proceedings of International Conference on Functional Programming 2004. ACM Press, New York (2004)

    Google Scholar 

  17. Li, H., Reinke, C., Thompson, S.: Tool Support for Refactoring Functional Programs. In: ACM Sigplan Haskell Workshop (2003)

    Google Scholar 

  18. Li, H., Reinke, C., Thompson, S.: Progress on HaRe: the Haskell Refactorer. Poster presentation at the International Conference on Functional Programming, Snowbird, Utah. ACM, New York (2004)

    Google Scholar 

  19. Lämmel, R., Visser, J.: Generic Programming with Strafunski (2001), http://www.cs.vu.nl/Strafunski/

  20. Viet, C.N.: Transformation in HaRe. Technical report, Computing Laboratory, University of Kent (2004), http://www.cs.kent.ac.uk/pubs/2004/2021

  21. Nipkow, T., Paulson, L.C., Wenzel, M.: Isabelle/HOL: A Proof assistant for Higher-Order Logic. Springer, Heidelberg (2002)

    Book  Google Scholar 

  22. Opdyke, W.F.: Refactoring Object-Oriented Frameworks. PhD thesis, University of Illinois at Urbana-Champaign (1992)

    Google Scholar 

  23. Russell, D.J.: FAD: Functional Analysis and Design Methodology. PhD thesis, University of Kent (2000)

    Google Scholar 

  24. Tennent, R.D.: Principles of Programming Languages. Prentice Hall, Englewood Cliffs (1979)

    MATH  Google Scholar 

  25. Thompson, S.: Minesweeper, http://www.cs.kent.ac.uk/people/staff/sjt/craft2e/Games/

  26. Thompson, S., Reinke, C.: A Case Study in Refactoring Functional Programs. In: Brazilian Symposium on Programming Languages (2003)

    Google Scholar 

  27. The Unified Modeling Language, http://www.uml.org/

  28. Wadler, P.: Views: a way for pattern-matching to cohabit with data abstraction. In: Proceedings of 14th ACM Symposium on Principles of Programming Languages, January 1987. ACM Press, New York (1987) (revised March 1987)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2005 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Thompson, S. (2005). Refactoring Functional Programs. In: Vene, V., Uustalu, T. (eds) Advanced Functional Programming. Lecture Notes in Computer Science, vol 3622. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11546382_9

Download citation

  • DOI: https://doi.org/10.1007/11546382_9

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-28540-3

  • Online ISBN: 978-3-540-31872-9

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics