HOPE workshop aims at bringing together researchers interested in the design, semantics, implementation, and verification of higher-order effectful programs. It will be informal, consisting of invited talks, contributed talks on work in progress, and open-ended discussion sessions.
Goals of the Workshop
A recurring theme in many papers at ICFP, and in the research of many ICFP attendees, is the interaction of higher-order programming with various kinds of effects: storage effects, I/O, control effects, concurrency, etc. While effects are of critical importance in many applications, they also make it hard to build, maintain, and reason about one’s code. Higher-order languages (both functional and object-oriented) provide a variety of abstraction mechanisms to help “tame” or “encapsulate” effects (e.g. monads, ADTs, ownership types, typestate, first-class events, transactions, Hoare Type Theory, session types, substructural and region-based type systems), and a number of different semantic models and verification technologies have been developed in order to codify and exploit the benefits of this encapsulation (e.g. bisimulations, step-indexed Kripke logical relations, higher-order separation logic, game semantics, various modal logics). But there remain many open problems, and the field is highly active.
The goal of the HOPE workshop is to bring researchers from a variety of different backgrounds and perspectives together to exchange new and exciting ideas concerning the design, semantics, implementation, and verification of higher-order effectful programs.
We want HOPE to be as informal and interactive as possible. The program will thus involve a combination of invited talks, contributed talks about work in progress, and open-ended discussion sessions. There will be no published proceedings, but participants will be invited to submit working documents, talk slides, etc. to be posted on the workshop’s website:
Effective programming: bringing algebraic effects and handlers to OCaml
Leo White, Jane Street
Algebraic effects were originally introduced to study the semantics of computational effects. With the addition of handlers they have become an exciting new programming construct for implementing such effects. Languages such as Eff have demonstrated that handlers can be used as a more composable alternative to monads for implementing effects in a pure language.
OCaml provides many standard effects, such as mutable state, built into the language. Those effects not built into the language, for example concurrency, are traditionally implemented using monads. The first part of this talk will describe work to implement native algebraic effects for OCaml. The original motivation for this work was to provide built-in support for concurrency in OCaml without tying the language to a particular concurrency implementation. However, algebraic effects support many interesting examples beyond concurrency.
As with exceptions, algebraic effects risk being performed in a context where they will not be handled. Type systems designed to track the side-effects of expressions have been around for many years, and seem eminently suitable for ensuring all algebraic effects are appropriately handled. Recent developments in languages such as Koka have begun to produce effect systems that are genuinely usable, but they have yet to breakthrough into a more mainstream language. The second part of this talk will describe work to integrate an effect system into OCaml whilst maintaining backwards compatibility. This system both prevents effects from going unhandled and turns OCaml into a pure functional language: successfully tracking the purity of functions through their types.
The talk will discuss the interesting questions and challenges that still remain before this work is ready for release into OCaml.
This is joint work with Stephen Dolan, Matija Pretnar and KC Sivaramakrishnan.
Sun 18 Sep
|09:10 - 09:15|
|09:15 - 10:15|
|10:45 - 11:15|
|11:15 - 11:45|
|11:45 - 12:15|
|14:00 - 14:30|
|14:30 - 15:00|
|15:30 - 16:00|
|Link to publication|
|16:00 - 16:30|
|17:00 - 17:30|
Call for Talk Proposals
We solicit proposals for contributed talks. We recommend preparing proposals of at most 2 pages, in either plain text or PDF format. However, we will accept longer proposals or submissions to other conferences, under the understanding that PC members are only expected to read the first two pages of such longer submissions. When submitting talk proposals, authors should specify how long a talk the speaker wishes to give. By default, contributed talks will be 30 minutes long, but proposals for shorter or longer talks will also be considered. Speakers may also submit supplementary material (e.g. a full paper, talk slides) if they desire, which PC members are free (but not expected) to read.
We are interested in talks on all topics related to the interaction of higher-order programming and computational effects. Talks about work in progress are particularly encouraged. If you have any questions about the relevance of a particular topic, please contact the PC chairs, Aleks Nanevski (firstname.lastname@example.org) and Lars Birkedal (email@example.com).
- Deadline for talk proposals (extended): June 19, 2016 (Sunday)
- Notification of acceptance: July 15, 2016 (Friday)
- Workshop: September 18, 2016 (Sunday)
|Link to publication|