arrow
Return

Typing Strictness

delete2026-01-01
delete0
PRE
AI
D
Daniel Sainati *
J
Joseph W. Cutler
B
BENJAMIN C. PIERCE
S
Stephanie Weirich
DOI:10.1145/3776657delete
deleteOriginal
deleteOriginal request for help
deleteShare
deleteSave
Abstract

Abstract

En 中文
Strictness analysis is critical to efficient implementation of languages with non-strict evaluation, mitigating much of the performance overhead of laziness. However, reasoning about strictness at the source level can be challenging and unintuitive. We propose a new definition of strictness that refines the traditional one by describing variable usage more precisely. We lay type-theoretic foundations for this definition in both call-by-name and call-by-push-value settings, drawing inspiration from the literature on type systems tracking effects and coeffects. We prove via a logical relation that the strictness attributes computed by our type systems accurately describe the use of variables at runtime, and we offer a strictness-annotation-preserving translation from the call-by-name system to the call-by-push-value one. All our results are mechanized in Rocq.
Keywords:
Type Systems
Strictness Analysis
Call-By-Push-Value
Lazy Evaluation

Journal

P
Proceedings of the ACM on Programming Languages-PACMPL
IF:
2.8
Papers:
308
Citations:
4.7K

Organization

U
University of Pennsylvania
Scholars:
1.2W
Papers: 4.4K
Citations: 11.8W
Cited Papers

Cited Papers

Call-By-Push-Value
err
IF0
err2003-01-01
err0
PREAI
errLevy,Paul Blain
errShare
errSave
errShare
errSave
err
IF0
err
err0
PREAI
err
errShare
errSave
err
IF0
err
err0
PREAI
err
errShare
errSave
err
IF0
err
err0
PREAI
err
errShare
errSave
err
IF0
err
err0
PREAI
err
errShare
errSave
err
IF0
err
err0
PREAI
err
errShare
errSave
err
IF0
err
err0
PREAI
err
errShare
errSave
err
IF0
err
err0
PREAI
err
errShare
errSave
researcher View more