Fine Control of Demand in Haskell

@inproceedings{Harrison2002FineCO,
  title={Fine Control of Demand in Haskell},
  author={William L. Harrison and Tim Sheard and James Hook},
  booktitle={MPC},
  year={2002}
}
Functional languages have the ?-calculus at their core, but then depart from this firm foundation by including features that alter their default evaluation order. The resulting mixed evaluation--partly lazy and partly strict--complicates the formal semantics of these languages. The functional language Haskell is such a language, with features such as pattern-matching, case expressions with guards, etc., in troducing a modicum of strictness into the otherwise lazy language. But just how does… 

Figures from this paper

The logic of demand in Haskell
TLDR
A programming logic, P-logic, is introduced, which neatly formalizes the mixed evaluation in Haskell pattern-matching as a logic, thereby simplifying the task of specifying and verifying Haskell programs.
Reflecting Demand in Programming Logics : a case study for Haskell
TLDR
A programming logic, P-logic, is introduced, which neatly formalizes the mixed evaluation in Haskell pattern-matching as a logic, thereby simplifying the task of specifying and verifying Haskell programs.
Pattern-driven Reduction in Haskell
TLDR
This paper provides both an abstract semantics and a logical characterization of pattern-matching in Haskell and the reduction order that it entails.
Basic Pattern Matching Calculi: Syntax, Reduction, Confluence, and Normalisation
TLDR
The pattern matching calculus is a refinement of λ-calculus that integrates mechanisms appropriate for fine-grained modelling of non-strict pattern matching by embedding into expressions the separate syntactic category of matchings.
A Simple Semantics for Polymorphic Recursion
TLDR
The semantics reported here contribute an essential building block to any semantics of Haskell: a model for first-order polymorphic recursion.
Precise Reasoning About Non-strict Functional Programs; How to Chase Bottoms, and How to Ignore Them
TLDR
This thesis consists of two parts, a case study in program verification and reasoning about non-strict functional programming languages with partial and infinite values and lifted types, including lifted function spaces, and proved that if two closed terms have the same semantics in the total language, then they have related semantics inThe partial language.
Chasing Bottoms: A Case Study in Program Verification in the Presence of Partial and Infinite Values
TLDR
This work describes a method for testing properties of programs in the presence of partial and infinite values and proves that the programs they have written are in fact (more or less) inverses using first fixpoint induction and then the approximation lemma.
Automated soundness checking of a programming logic for Haskell
TLDR
The paper develops a parametricity principle for predicates of P-logic, which justifies checking soundness of polymorphic rules at a particular type instance, by implementing the Haskell semantics with a meta-circular interpreter.
Structured generic programming in Eden
TLDR
This thesis presents a reduced, structure-oriented approach to generic programming tailored for Eden’s needs, and presents generic methods for partitioning data structures as well as generic versions of the parallel map function.
Bimonadic Semantics for Basic Pattern Matching Calculi
TLDR
Using lifting and Maybe monads, the authors obtain standard Haskell semantics, and by adding another level of Maybe to both, they obtain a denotational semantics of the “matching failure as exceptions” approach of Erwig and Peyton Jones.
...
1
2
3
...

References

SHOWING 1-10 OF 26 REFERENCES
The essence of functional programming
TLDR
This paper explores the use monads to structure functional programs and describes the relation between monads and the continuation-passing style in a compiler for Haskell that is written in Haskell.
Secrets of the Glasgow Haskell Compiler inliner
TLDR
The purpose of this paper is to articulate the key lessons the authors learned from a full-scale “production” inliner, the one used in the Glasgow Haskell compiler, and to provide some indicative measurements to substantiate the importance of various aspects of the inliner.
Monad transformers and modular interpreters
TLDR
A fully modular interpreter based on monad transformers that incudes features missing from Steele's, Espinosa's, and Wadler's earlier efforts is designed and implemented in Gofer, whose constructor classes provide just the added power over Haskell's type classes to allow precise and convenient expression of the ideas.
Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory
A Transformation-Based Optimiser for Haskell
A Metalanguage for Programming with Bound Names Modulo Renaming
This paper describes work in progress on the design of an ML-style metalanguage FreshML for programming with recursively defined functions on user-defined, concrete data types whose constructors may
Implementing Lazy Functional Languages on Stock Hardware: The Spineless Tagless G-Machine
  • S. Jones
  • Computer Science
    J. Funct. Program.
  • 1992
TLDR
The Spineless Tagless G-machine is an abstract machine designed to support non-strict higher-order functional languages, and the STG language is an austere but recognizably-functional language, which as well as a denotational meaning has a well-defined operational semantics.
The Implementation of Functional Programming Languages
Semantics of programming languages - structures and techniques
Semantics of Programming Languages exposes the basic motivations and philosophy underlying the applications of semantic techniques in computer science. It introduces the mathematical theory of
A new approach to abstract syntax involving binders
  • M. Gabbay, A. Pitts
  • Computer Science
    Proceedings. 14th Symposium on Logic in Computer Science (Cat. No. PR00158)
  • 1999
TLDR
It is shown that in FM-set theory one can express statements quantifying over 'fresh' names and this is used to give a novel set-theoretic interpretation of name abstraction.
...
1
2
3
...