We argue that the central problem of the interaction of higher-order programming with various kinds of effects can be tackled by eliminating the distinction: higher-order facility is itself an effect, not too different from state effect.
We demonstrate that first-class abstractions may be treated uniformly as any other effects, thus completing Cartwright and Felleisen’s program of “Extensible Denotational Language Specifications”: Variable substitution is indistinguishable from dereference of a C-like variable; “lambda”, or creating a closure, is an effect as well. The (lexical) closure acts as a handler of all variable dereference effects arising during the execution of its body. Our approach uniformly handles dynamic and lexical binding and various calling conventions.
All in all, higher-order programming is essentially first-order single-assignment programming with first-class storage. A framework like extensible-effects that supports multiple effects should not hence have any problem with abstraction and substitution effects – which gives HOPE.
Extended Abstract (HOPE.pdf) | 113KiB |
Sun 3 SepDisplayed time zone: Belfast change
10:30 - 11:30 | |||
10:30 30mTalk | Higher-order Programming is an Effect HOPE File Attached | ||
11:00 30mTalk | A monadic solution to the Cartwright-Felleisen-Wadler conjecture HOPE File Attached |