How to declare an imperative
P Wadler - ACM Computing Surveys (CSUR), 1997 - dl.acm.org
How can we integrate interaction into a purely declarative language? This tutorial describes
a solution to this problem based on a monad. The solution has been implemented in the …
a solution to this problem based on a monad. The solution has been implemented in the …
Graph IRS for impure higher-order languages: making aggressive optimizations affordable with precise effect dependencies
Graph-based intermediate representations (IRs) are widely used for powerful compiler
optimizations, either interprocedurally in pure functional languages, or intraprocedurally in …
optimizations, either interprocedurally in pure functional languages, or intraprocedurally in …
Locus solum: From the rules of logic to the logic of rules
JY Girard - Mathematical structures in computer science, 2001 - cambridge.org
Go back to An-fang, the Peace Square at An-Fang, the Beginning Place at An-Fang, where
all things start (…) An-Fang was near a city, the only living city with a pre-atomic name (…) …
all things start (…) An-Fang was near a city, the only living city with a pre-atomic name (…) …
Equality saturation: a new approach to optimization
Optimizations in a traditional compiler are applied sequentially, with each optimization
destructively modifying the program to produce a transformed program that is then passed to …
destructively modifying the program to produce a transformed program that is then passed to …
Type-directed partial evaluation
O Danvy - Proceedings of the 23rd ACM SIGPLAN-SIGACT …, 1996 - dl.acm.org
We present a strikingly simple partial evaluator, that is type-directed and reifies a compiled
program into the text of a residual, specialized program. Our partial evaluator is concise (a …
program into the text of a residual, specialized program. Our partial evaluator is concise (a …
[PDF][PDF] Reflection in logic, functional and object-oriented programming: a short comparative study
FN Demers, J Malenfant - Proceedings of the IJCAI, 1995 - lirmm.fr
Reflection is a wide-ranging concept that has been studied independently in many different
areas of science in general, and computer science in particular. Even in the sub-area of …
areas of science in general, and computer science in particular. Even in the sub-area of …
Intersection types and computational effects
R Davies, F Pfenning - Proceedings of the fifth ACM SIGPLAN …, 2000 - dl.acm.org
We show that standard formulations of intersection type systems are unsound in the
presence of computational effects, and propose a solution similar to the value restriction for …
presence of computational effects, and propose a solution similar to the value restriction for …
Capturing types
Type systems usually characterize the shape of values but not their free variables. However,
many desirable safety properties could be guaranteed if one knew the free variables …
many desirable safety properties could be guaranteed if one knew the free variables …
Compiling with continuations, continued
A Kennedy - Proceedings of the 12th ACM SIGPLAN international …, 2007 - dl.acm.org
We present a series of CPS-based intermediate languages suitable for functional language
compilation, arguing that they have practical benefits over direct-style languages based on A …
compilation, arguing that they have practical benefits over direct-style languages based on A …
Monads and effects
A tension in language design has been between simple semantics on the one hand, and
rich possibilities for side-effects, exception handling and so on on the other. The introduction …
rich possibilities for side-effects, exception handling and so on on the other. The introduction …