Results 1 -
3 of
3
Static Contract Checking for Haskell
- In Proceedings of the 36 th Annual ACM Symposium on the Principles of Programming Languages
, 2009
"... Program errors are hard to detect and are costly both to programmers who spend significant efforts in debugging, and for systems that are guarded by runtime checks. Static verification techniques have been applied to imperative and object-oriented languages, like Java and C#, but few have been appli ..."
Abstract
-
Cited by 12 (1 self)
- Add to MetaCart
Program errors are hard to detect and are costly both to programmers who spend significant efforts in debugging, and for systems that are guarded by runtime checks. Static verification techniques have been applied to imperative and object-oriented languages, like Java and C#, but few have been applied to a higher-order lazy functional language, like Haskell. In this paper, we describe a sound and automatic static verification framework for Haskell, that is based on contracts and symbolic execution. Our approach is modular and gives precise blame assignments at compile-time in the presence of higher-order functions and laziness. D.3 [Software]: Program-
The Haskell Cabal, a common architecture for building applications and libraries
"... Many programming languages and operating systems have a means of bundling together related source files, libraries, documentation, or executables for distribution. Such packaging systems contribute to a developer’s ability to write complex software, since they can build upon reusable components whic ..."
Abstract
-
Cited by 6 (0 self)
- Add to MetaCart
Many programming languages and operating systems have a means of bundling together related source files, libraries, documentation, or executables for distribution. Such packaging systems contribute to a developer’s ability to write complex software, since they can build upon reusable components which can be easily installed on an end-user’s system. In addition, ease of installation can greatly increase initial adoption of a piece of software in user communities. The Haskell Cabal is an architecture for building and installing any tool developed in the Haskell language. It specifies a command-line interface that makes it easy for end users to build and install libraries and applications, and supports tool authors by providing a library which implements this interface. Cabal draws inspiration from a wide variety of tools and may in turn inspire tools for distribution of software in other functional programming languages. It is an evolving piece of open source software, and as such, we welcome discussion and contributions from any user community with an interest in its direction. Cabal was officially released with the latest version of three Haskell compilers, GHC 6.4, Hugs98 March 2005, and nhc98 1.18. 1 Its interface has already been used to implement a number of layered tools, and many newly released software tools use Cabal’s API as their build system. 1
General Terms Languages, Design
"... Duplicated code is a well known problem in software maintenance and refactoring. Code clones tend to increase program size and several studies have shown that duplicated code makes maintenance and code understanding more complex and time consuming. This paper presents a new technique for the detecti ..."
Abstract
- Add to MetaCart
Duplicated code is a well known problem in software maintenance and refactoring. Code clones tend to increase program size and several studies have shown that duplicated code makes maintenance and code understanding more complex and time consuming. This paper presents a new technique for the detection and removal of duplicated Haskell code. The system is implemented within the refactoring framework of the Haskell Refactorer (HaRe), and uses an Abstract Syntax Tree (AST) based approach. Detection of duplicate code is automatic, while elimination is semi-automatic, with the user managing the clone removal. After presenting the system, an example is given to show how it works in practice. Categories and Subject Descriptors D.2.3 [SOFTWARE ENGI-

