Repository logo
 

Call-by-need effects via coeffects

Published version
Peer-reviewed

Loading...
Thumbnail Image

Change log

Abstract

Effect systems refine types with information about the behaviour of programs. They have been used for many purposes, such as optimizing programs, determining resource usage, and finding bugs. So far, however, work on effect systems has largely concentrated on call-by-value languages. We consider the problem of designing an effect system for a lazy language. This is more challenging because it depends on the ability to locate the first use of each variable. Coeffect systems, which track contextual requirements of programs, provide a method of doing this. We describe how to track variable usage in a coeffect system that can be instantiated for different reduction strategies, including call-by-need. We then add effects to the result, allowing work that has been done on effect systems for call-by-value languages to be applied to lazy languages.

Description

Journal Title

Open Computer Science

Conference Name

Journal ISSN

2299-1093
2299-1093

Volume Title

8

Publisher

De Gruyter

Rights and licensing

Except where otherwised noted, this item's license is described as Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0)
Sponsorship
Engineering and Physical Sciences Research Council (EP/N509620/1)
EPSRC (1789520)