Print

Print


*BCS FACS - Annual Peter Landin Semantics Seminar: Compiling Without
Continuations*

*Date/Time: *Tuesday 12 December 2017, 6.00pm - 9.00pm

*Venue::* BCS, 1st Floor, The Davidson Building, 5 Southampton Street,
London, WC2E 7HA | Maps <http://www.bcs.org/maps>

*Speaker: *Professor Simon Peyton Jones
<https://www.microsoft.com/en-us/research/people/simonpj/>, FRS (Microsoft
Research)

*Cost: *Free

*Booking: * http://www.bcs.org/category/12468

*Synopsis:*

Peter Landin (1930 - 2009) was a pioneer whose ideas underpin modern
computing. In the 1950s and 1960s, Landin showed that programs could be
defined in terms of mathematical functions, translated into functional
expressions in the lambda calculus, and their meaning calculated with an
abstract mathematical machine. Compiler writers and designers of modern-day
programming languages alike owe much to Landin's pioneering work.

Each year, a leading figure in computer science will pay tribute to
Landin's contribution to computing through a public seminar. This year's
seminar is entitled “Compiling Without Continuations” and will be given by
Professor Simon Peyton Jones, FRS (Microsoft Research).


*Programme*

5.15pm

Coffee

6.00pm

Welcome & Introduction

6.05pm

Peter Landin Semantics Seminar

                   Compiling Without Continuations

               Professor Simon Peyton Jones
<https://www.microsoft.com/en-us/research/people/simonpj/>, FRS (Microsoft
Research)

7.20pm

Drinks Reception

*Seminar details*



GHC compiles Haskell via Core, a tiny intermediate language based closely
on the lambda calculus.   Almost all GHC’s optimisations happen in Core,
but until recently there was an important kind of optimisation that Core
really did not handle well.   In this talk I’ll show you what the problem
was, and how Core’s new “join points” solve it simply and beautifully, by
effectively allowing Core to express control flow as well as data flow;
there are strong links to so-called “continuation passing style” (CPS)
here.



Understanding join points can help you are a programmer too, because you
can write code confident that it will optimise well.   I’ll show you a
rather compelling example this: “skip-less streams” now fuse well, for the
first time, which allows us to drop the previous (ingenious but awkward)
workarounds.