Chapter 7: Formalisation of Haskell Refactorings

Huiqing Li; Thompson, Simon
January 2007
Trends in Functional Programming Volume 6;2007, Vol. 6, p95
Refactoring is a technique for improving the design of existing programs without changing their external behaviour. HaRe is the refactoring tool we have built to support refactoring Haskell 98 programs. Along with the development of HaRe, we have also investigated the formal specification and proof of validity of refactorings. This formalisation process helps to clarify the meaning of refactorings, improves our confidence in the behaviour-preservation of refactorings, and reduces the need for testing. This paper gives an overview of HaRe, and shows our approach to the formalisation of refactorings.


Related Articles

  • Chapter 3: Software Metrics: Measuring Haskell. Ryder, Chris; Thompson, Simon // Trends in Functional Programming Volume 6;2007, Vol. 6, p31 

    Software metrics have been used in software engineering as a mechanism for assessing code quality and for targeting software development activities, such as testing or refactoring, at areas of a program that will most benefit from them. Haskell [PJ03] has many tools for software engineering,...

  • Chapter 6: Implementing Mobile Haskell. Du Bois, André Rauber; Trinder, Phil; Loidl, Hans-Wolfgang // Trends in Functional Programming Volume 4;2005, Vol. 4, p79 

    Mobile computation enables computations to move between a dynamic set of locations and is becoming an increasingly important paradigm. Mobile Haskell (mHaskell) is an extension of Haskell that supports mobile computation in open distributed systems i.e. dynamically changing systems where...

  • Chapter 5: Efficient Interpretation by Transforming Data Types and Patterns to Functions. Jansen, Jan Martin; Koopman, Pieter; Plasmeijer, Rinus // Trends in Functional Programming Volume 7;2007, Vol. 7, p73 

    This paper describes an efficient interpreter for lazy functional languages like Haskell and Clean. The interpreter is based on the elimination of algebraic data types and pattern-based function definitions by mapping them to functions using a new efficient variant of the Church encoding. The...

  • Haskell Programming Language.  // Network Dictionary;2007, p224 

    A definition of the term "Haskell programming language" is presented. Simply called Haskell in most cases, Haskell programming language is a standardized pure functional programming language with non-strict semantics. It features static polymorphic typing, higher-order functions, user-defined...

  • Special section: International Conference on Graph Transformation ICGT 2004. Parisi-Presicce, Francesco // Software & Systems Modeling;Sep2007, Vol. 6 Issue 3, p267 

    The article discusses various reports published within the issue including one by Gabriele Taentzer on analyzing refactoring dependencies using graph transformation, and another by Simon M. Becker on graph-based algorithm for consistency maintenance.

  • A new paradigm for component-based development. Granström, Johan G. // Journal of Software (1796217X);May2012, Vol. 7 Issue 5, p1136 

    Hancock and Setzer [10] describe how Haskell's monolithic IO monad can be decomposed into worlds when working in a dependently typed language, like Martin-Löf's type theory [15]. This paper introduces the notion of world map and shows that worlds and world maps form a category with arbitrary...

  • A Classification of Refactoring Methods Based on Software Quality Attributes. Elish, Karim; Alshayeb, Mohammad // Arabian Journal for Science & Engineering (Springer Science & Bu;Nov2011, Vol. 36 Issue 7, p1253 

    Refactoring is the process of improving the design of existing code by changing its internal structure without affecting its external behavior. Refactoring tends to improve software quality by improving design, improving readability and reducing 'bugs'. There are many different refactoring...

  • Time to consider design refactoring. Jordan, Ben // Electronics Weekly;7/7/2010, Issue 2434, p21 

    The article focuses on the significance of the concept software refactoring. It states that the refactoring is a common activity in software development circles. It also states that the refactoring means the application to revise and rewrite the insides of a module of code. Further it mentions...

  • Empirical Evaluation of Syntactic and Semantic Defects Introduced by Refactoring Support. Basit, Wafa; Lodhi, Fakhar; Bhatti, Usman // International Arab Journal of Information Technology (IAJIT);2016, Vol. 13 Issue 1, p76 

    Software maintenance is a major source of expense in software projects. A proper evolution process is a critical ingredient in the cost-efficient development of high-quality software. A special case of software evolution is refactoring that cannot change the external behaviour of the software...


Read the Article


Sorry, but this item is not currently available from your library.

Try another library?
Sign out of this library

Other Topics