skip to main content
10.1145/1706356.1706379acmconferencesArticle/Chapter ViewAbstractPublication PagespepmConference Proceedingsconference-collections
research-article

Making "stricterness" more relevant

Published: 18 January 2010 Publication History

Abstract

Adapting a strictness analyser to have it take into account explicit strictness annotations can be a tricky business. Straightforward extensions of analyses based on relevance typing are likely to either be unsafe or fail to pick the fruits of increases in strictness that are introduced through annotations. We propose a more involved adaptation of relevance typing, that can be used to derive strictness analyses that are both safe and effective in the presence of explicit strictness annotations. The resulting type system provides a firm foundation for implementations of type-based strictness analysers in compilers for lazy programming languages such as Haskell and Clean.

References

[1]
Torben Amtoft. Minimal thunkification. In Patrick Cousot, Moreno Falaschi, Gilberto Filé, and Antoine Rauzy, editors, Static Analysis, Third International Workshop, WSA '93, Padova, Italy, September 22-24, 1993, Proceedings, volume 724 of Lecture Notes of Computer Science, pages 218--229. Springer-Verlag, 1993.
[2]
Alan Ross Anderson, Nuel D. Belnap Jr., and J. Michael Dunn. Entailment: The Logic of Relevance and Necessity, volume 1. Princeton University Press, Princeton, New Jersey, 1975.
[3]
Clement A. Baker-Finch. Relevant logic and strictness analysis. In Michel Billaud, Pierre Castéran, Marc-Michel Corsini, Kaninda Musumbu, and Antoine Rauzy, editors, Actes WSA'92 Workshop on Static Analysis (Bordeaux), 23-25 September 1992, Laboratoire Bordelais de Recherche en Informatique (LaBRI), Proceedings, volume 81-82 of Series Bigre, pages 221--228. Atelier Irisa, 1992.
[4]
Henk P. Barendregt, Richard Kennaway, Jan Willem Klop, and M. Ronan Sleep. Needed reduction and spine strategies for the lambda calculus. Information and Computation, 75(3):191--231, 1987.
[5]
Nick Benton. Strictness Analysis of Lazy Functional Programs. PhD thesis, University of Cambridge, 1992.
[6]
Geoffrey L. Burn, Chris Hankin, and Samson Abramsky. The theory of strictness analysis for higher order functions. In Harald Ganzinger and Neil D. Jones, editors, Programs as Data Objects, Proceedings of a Workshop, Copenhagen, Denmark, October 17-19, 1985, volume 217 of Lecture Notes in Computer Science, pages 42--62. Springer-Verlag, 1986.
[7]
Iliano Cervesato and Frank Pfenning. A linear logical framework. Information and Computation, 179(1):19--75, 2002.
[8]
Mario Coppo, Ferruccio Damiani, and Paola Giannini. Strictness analysis, totality, and non-standard-type inference. Theoretical Computer Science, 272(1-2):69--112, 2002.
[9]
Kei Davis and Philip Wadler. Backwards strictness analysis: Proved and improved. In Kei Davis and John Hughes, editors, Functional Programming, Proceedings of the 1989 Glasgow Workshop, 21-23 August 1989, Fraserburgh, Scotland, UK, Workshops in Computing, pages 12--30. Springer-Verlag, 1990.
[10]
Marko van Eekelen and Maarten de Mol. Proof tool support for explicit strictness. In Andrew Butterfield, Clemens Grelck, and Frank Huch, editors, Implementation and Application of Functional Languages, 17th International Workshop, IFL 2005, Dublin, Ireland, September 19-21, Revised Selected Papers, volume 4015 of Lecture Notes in Computer Science, pages 37--54. Springer-Verlag, 2006.
[11]
Andy Gill, John Launchbury, and Simon Peyton Jones. A short cut to deforestation. In FPCA '93 Conference on Functional Programming and Computer Architecture. Copenhagen, Denmark, 9-11 June 1993, pages 223--232. ACM Press, 1993.
[12]
Kevin Glynn, Peter J. Stuckey, and Martin Sulzmann. Effective strictness analysis with HORN constraints. In Patrick Cousot, editor, Static Analysis, 8th International Symposium, SAS 2001, Paris, France, July 16-18, 2001, Proceedings, volume 2126 of Lecture Notes in Computer Science, pages 73--92. Springer-Verlag, 2001.
[13]
Jurriaan Hage and Stefan Holdermans. Heap recycling for lazy languages. In John Hatcliff, Robert Glück, and Oege de Moor, editors, Proceedings of the 2008 ACM SIGPLAN Symposium on Partial Evaluation and Semantics-Based Program Manipulation, PEPM'08, San Francisco, California, USA, January 7-8, 2008, pages 189--197. ACM Press, 2008.
[14]
Jurriaan Hage, Stefan Holdermans, and Arie Middelkoop. A generic usage analysis with subeffect qualifiers. In Ralf Hinze and Norman Ramsey, editors, Proceedings of the 12th ACM SIGPLAN International Conference on Functional Programming, ICFP 2007, Freiburg, Germany, October 1-3, 2007, pages 235--246. ACM Press, 2007.
[15]
Ralf Hinze. Projection-based Strictness Analysis: Theoretical and Practical Aspects. PhD thesis, Bonn University, 1995.
[16]
Paul Hudak, John Hughes, Simon Peyton Jones, and Philip Wadler. A history of Haskell: Being lazy with class. In Barbara G. Ryder and Brent Hailpern, editors, Proceedings of the Third ACM SIGPLAN History of Programming Languages Conference (HOPL-III), San Diego, California, USA, 9-10 June 2007, pages 1--55. ACM Press, 2007.
[17]
John Hughes. Backwards analysis of functional programs. In Anders Bjørner, Neil D. Jones, and Andrei P. Ershov, editors, Partial Evaluation and Mixed Computation: Proceedings of the IFIP TC2 Workshop, Gammel Avernaes, Denmark, 18-24 Oct., 1987, pages 187--208. North-Holland, 1988.
[18]
John Hughes. Why functional programming matters. The Computer Journal, 32(2):98--107, 1989.
[19]
Thomas P. Jensen. Strictness analysis in logical form. In John Hughes, editor, Functional Programming Languages and Computer Architecture, 5th ACM Conference, Cambridge, MA, USA, August 26-30, 1991, Proceedings, pages 352--366. Springer-Verlag, 1991.
[20]
Thomas P. Jensen. Inference of polymorphic and conditional strictness properties. In POPL '98, Proceedings of the 25th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, January 19-21, 1998, San Diego, CA, USA, pages 209--221. ACM Press, 1998.
[21]
Patricia Johann and Janis Voigtländer. The impact of seq on free theorems-based program transformations. Fundamenta Informaticae, 69(1-2):63--102, 2006.
[22]
Tsung-Min Kuo and Prateek Mishra. Strictness analysis: A new perspective based on type inference. In FPCA '89, Conference on Functional Programming Languages and Computer Architecture, Imperial College, London, England, 11-13 September 1989, pages 260--272. ACM Press, 1989.
[23]
Alan Mycroft. The theory and practice of transforming call-by-need into call-by-value. In Bernard Robinet, editor, International Symposium on Programming, Proceedings of the Fourth 'Colloque International sur la Programmation', Paris, France, 22-24 April 1980, volume 83 of Lecture Notes in Computer Science, pages 269--281. Springer-Verlag, 1980.
[24]
Flemming Nielson and Hanne Riis Nielson. Type and effect systems. In Ernst-Rüdiger Olderog and Bernhard Steffen, editors, Correct System Design, Recent Insight and Advances, (to Hans Langmaack on the occasion of his retirement from his professorship at the University of Kiel), volume 1710 of Lecture Notes in Computer Science, pages 114--136. Springer-Verlag, 1999.
[25]
Eric Nöcker. Strictness analysis using abstract reduction. In FPCA '93 Conference on Functional Programming Languages and Computer Architecture. Copenhagen, Denmark, 9-11 June 1993, pages 255--265. ACM Press, 1993.
[26]
Simon Peyton Jones, editor. Haskell 98 Language and Libraries: The Revised Report. Cambridge University Press, Cambridge, 2003.
[27]
Rinus Plasmeijer and Marko van Eekelen. Concurrent Clean language report-version 1.3. Technical Report CSI-R9816, University of Nijmegen, 1998.
[28]
Manfred Schmidt-Schauß. Safety of Nöocker's strictness analysis. Journal of Functional Programming, 18(4):503--551, 2008.
[29]
Daniel Seidel and Janis Voigtländer. Taming selective strictness. In Stefan Fischer, Erik Maehle, and Rüdiger Reischuk, editors, INFORMATIK 2009 -- Im Focus das Leben, Beiträge der 39. Jahrestagung der Gesellschaft für Informatik e.V. (GI), 28. September -- 2. October, in Lübeck, volume 154 of Lecture Notes in Informatics, pages 2916--2930. GI, 2009.
[30]
Kirsten Lackner Solberg Gasser, Hanne Riis Nielson, and Flemming Nielson. Strictness and totality analysis. Science of Computer Programming, 31(1):113--145, 1998.
[31]
Jean-Pierre Talpin and Pierre Jouvelot. Polymorphic type, region and effect inference. Journal of Functional Programming, 2(3):245--271, 1992.
[32]
Edsko de Vries. Making Uniqueness Typing Less Unique. PhD thesis, Trinity College Dublin, 2008.
[33]
Edsko de Vries, Rinus Plasmeijer, and David Abrahamson. Uniqueness typing simplified. In Olaf Chitil, Zoltán Horváth, and Viktoria Zsók, editors, Implementation and Application of Functional Languages, 19th International Symposium, IFL 2007, Freiburg, Germany, September 2007, Revised Selected Papers, volume 5083 of Lecture Notes in Computer Science, pages 201--218. Springer-Verlag, 2008.
[34]
Philip Wadler. Strictness analysis on non-flat domains (by abstract interpretation over finite domains). In Samson Abramsky and Chris Hankin, editors, Abstract Interpretation of Declarative Languages, pages 266--275. Ellis Horwood, Chichester, 1987.
[35]
Philip Wadler. Theorems for free! In FPCA '89 Conference on Functional Programming and Computer Architecture. Imperial College, London, England, 11-13 September 1989, pages 347--359. ACM Press, 1989.
[36]
David Walker. Substructural type systems. In Benjamin C. Pierce, editor, Advanced Topics in Types and Programming Languages. The MIT Press, Cambridge, Massachusetts, 2005.
[37]
David A. Wright. A new technique for strictness analysis. In Samson Abramsky and Tom Maibaum, editors, TAPSOFT'91: Proceedings of the International Joint Conference on Theory and Practice of Software Development, Brighton, UK, April 8-12, 1991, Volume 2: Advances in Distributed Computing (ADC) and Colloquium on Combining Paradigms for Software Development (CCPSD), volume 494 of Lecture Notes in Computer Science, pages 235--258. Springer-Verlag, 1991.

Cited By

View all

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
PEPM '10: Proceedings of the 2010 ACM SIGPLAN workshop on Partial evaluation and program manipulation
January 2010
168 pages
ISBN:9781605587271
DOI:10.1145/1706356
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 18 January 2010

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. explicit strictness annotations
  2. lazy evaluation
  3. relevance typing
  4. strictness analysis

Qualifiers

  • Research-article

Conference

PEPM '10
Sponsor:

Acceptance Rates

Overall Acceptance Rate 66 of 120 submissions, 55%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)2
  • Downloads (Last 6 weeks)0
Reflects downloads up to 08 Mar 2025

Other Metrics

Citations

Cited By

View all
  • (2019)Refined typing to localize the impact of forced strictness on free theoremsActa Informatica10.1007/s00236-011-0136-948:3(191-211)Online publication date: 2-Jan-2019
  • (2018)Derivation and inference of higher-order strictness typesComputer Languages, Systems and Structures10.1016/j.cl.2015.07.00444:PB(166-180)Online publication date: 20-Dec-2018
  • (2018)Making "stricterness" more relevantHigher-Order and Symbolic Computation10.1007/s10990-011-9079-723:3(315-335)Online publication date: 14-Dec-2018
  • (2017)Modular, higher order cardinality analysis in theory and practiceJournal of Functional Programming10.1017/S095679681700001627Online publication date: 16-Feb-2017
  • (2016)Autobahn: using genetic algorithms to infer strictness annotationsACM SIGPLAN Notices10.1145/3241625.297600951:12(114-126)Online publication date: 8-Sep-2016
  • (2016)Autobahn: using genetic algorithms to infer strictness annotationsProceedings of the 9th International Symposium on Haskell10.1145/2976002.2976009(114-126)Online publication date: 8-Sep-2016
  • (2015)Polyvariant Cardinality Analysis for Non-strict Higher-order Functional LanguagesProceedings of the 2015 Workshop on Partial Evaluation and Program Manipulation10.1145/2678015.2682536(139-142)Online publication date: 13-Jan-2015
  • (2014)Modular, higher-order cardinality analysis in theory and practiceACM SIGPLAN Notices10.1145/2578855.253586149:1(335-347)Online publication date: 8-Jan-2014
  • (2014)Modular, higher-order cardinality analysis in theory and practiceProceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages10.1145/2535838.2535861(335-347)Online publication date: 11-Jan-2014
  • (2012)Higher-Order Strictness TypingProceedings of the 2012 Conference on Trends in Functional Programming - Volume 782910.1007/978-3-642-40447-4_6(85-100)Online publication date: 12-Jun-2012
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media