International Conference on Functional Programming 2017 - podcast cover

International Conference on Functional Programming 2017

Oxford Universityicfp17.sigplan.org
ICFP 2017 is the 22nd ACM SIGPLAN International Conference on Functional Programming. ICFP provides a forum for researchers and developers to hear about the latest work on the design, implementations, principles, and uses of functional programming. The conference covers the entire spectrum of work, from practice to theory, including its peripheries. This year, there are keynotes from Chris Martens and John Launchbury; unfortunately, Rich Hickey was unable to attend as originally planned.

Episodes

Abstracting Definitional Interpreters

David Darais, University of Maryland, USA, gives the first presentation in the fourth panel, Effects, in the ICFP 2017 conference. Co-written by Nicholas Labich, David Van Horn, Phuc C. Nguyen, University of Maryland, USA. In this functional pearl, we examine the use of definitional interpreters as a basis for abstract interpretation of higher-order programming languages. As it turns out, definitional interpreters, especially those written in monadic style, can provide a nice basis for a wide va...

Dec 13, 201719 min

Symbolic Conditioning of Arrays in Probabilistic Programs

Praveen Narayanan, Indiana University, USA, gives the third presentation in the third panel, Applications, in the ICFP 2017 conference. Co-written by Chung-Chief Shan, Indiana University, USA. Probabilistic programming systems make machine learning methods modular by automating inference. Recent work by Shan and Ramsey (2017) makes inference itself modular by automating the common component of conditioning. Their work introduces a symbolic program transformation that treats conditioning generall...

Dec 13, 201717 min

A Framework for Adaptive Differential Privacy

Daniel Winograd-Cort University of Pennsylvania, USA, gives the first presentation in the third panel, Applications, in the ICFP 2017 conference. Co-written by Andreas Haeberlen and Aaron Roth, University of Pennsylvania, USA. Differential privacy is a widely studied theory for analyzing sensitive data with a strong privacy guarantee--any change in an individual's data can have only a small statistical effect on the result--and a growing number of programming languages now support differentially...

Dec 13, 201718 min

Prototyping a Query Compiler using Coq (Experience Report)

Louis Mandel (IBM) gives the first presentation in the third panel, Applications, in the ICFP 2017 conference. Co-written by Joshua Auerbach, Martin Hirzel, Avraham Shinnar, Jerome Simeon, IBM Research, USA. Designing and prototyping new features is important in many industrial projects. Functional programming and formal verification tools can prove valuable for that purpose, but lead to challenges when integrating with existing product code or when planning technology transfer. This article rep...

Dec 12, 201719 min

A Unified Approach to Solving Seven Programming Problems (Functional Pearl)

William E. Byrd, University of Utah, USA, gives the fourth presentation in the second panel, Functional Programming Techniques, in the ICFP 2017 conference. Co-written by Gregory Rosenblatt, Matthew Might, Michael Ballantyne (University of Utah). We present seven programming challenges in Racket, and an elegant, unified approach to solving them using constraint logic programming in mini Kanren.

Dec 12, 201720 min

Generic Functional Parallel Algorithms: Scan and FFT

Conal Elliott, Target, USA United States, gives the third presentation in the second panel, Functional Programming Techniques, in the ICFP 2017 conference. Parallel programming, whether imperative or functional, has long focused on arrays as the central data type. Meanwhile, typed functional programming has explored a variety of data types, including lists and various forms of trees. Generic functional programming decomposes these data types into a small set of fundamental building blocks: sum, ...

Dec 12, 201719 min

A Pretty But Not Greedy Printer (Functional Pearl)

Jean-Philippe Bernardy, University of Gothenburg, gives the second presentation in the second panel, Functional Programming Techniques, in the ICFP 2017 conference. This paper proposes a new specification of pretty printing which is stronger than the state of the art: we require the output to be the shortest possible, and we also offer the ability to align sub-documents at will. We argue that our specification precludes a greedy implementation. Yet, we provide an implementation which behaves lin...

Dec 12, 201714 min

Faster Coroutine Pipelines

Mike Spivey, University of Oxford, UK, gives the first presentation in the second panel, Functional Programming Techniques, in the ICFP 2017 conference. Coroutine pipelines provide an attractive structuring mechanism for complex programs that process streams of data, with the advantage over lazy streams that both ends of a pipeline may interact with the I-O system, as may processes in the middle. Two popular Haskell libraries, Pipes and Conduit, support such pipelines. In both libraries, pipelin...

Dec 12, 201719 min

Scaling up Functional Programming Education: Under the Hood of the OCaml MOOC

Roberto Di Cosmo (Inria, France and University of Paris Diderot, France), gives the fourth presentation in the first panel, Art and Education, in the ICFP 2017 conference. Co-written by Benjamin Canou (OCamlPro) and Gregoire Henry (OCamlPro). This article describes the key innovations used in the massive open online course 'Introduction to Functional Programming using OCaml that has run since the fall semester of 2015. A fully in-browser development environment with an integrated grader provides...

Dec 12, 201719 min

Lock-Step Simulation Is Child's Play (Experience Report)

Joachim Breiner, University of Pennsylvania, United States, gives the third presentation in the first panel, Art and Education, in the ICFP 2017 conference. Co-written by Chris Smith Google, USA. Implementing multi-player networked games by broadcasting the player's input and letting each client calculate the game state -- a scheme known as lock-step simulation -- is an established technique. However, ensuring that every client in this scheme obtains a consistent state is infamously hard and in ...

Dec 12, 201716 min

Testing and Debugging Functional Reactive Programming

Ivan Perez, University of Nottingham, UK, gives the second presentation in the first panel, Art and Education, in the ICFP 2017 conference. Co-written by Henrik Nilsson, University of Nottingham, UK. Many types of interactive applications, including video games, raise particular challenges when it comes to testing and debugging. Reasons include de-facto lack of reproducibility and difficulties of automatically generating suitable test data. This paper demonstrates that certain variants of Functi...

Dec 12, 201718 min

Super 8 Languages for Making Movies (Functional Pearl)

Leif Andersen (Northeastern University, USA) gives the first presentation in the first panel, Art and Education, in the ICFP 2017 conference. Co-written by Stephen Chang (Northeastern University, USA) and Matthias Felleisen (Northeastern University, USA). The Racket doctrine tells developers to narrow the gap between the terminology of a problem domain and general programming constructs by creating languages instead of just plain programs. This pearl illustrates this point with the creation of a...

Dec 07, 201717 min

Compositional Creativity: Some Principles for Talking to Computers

Chris Martens (North Carolina State University, United States) gives the first talk in the ICFP conference. Generativity is an increasingly popular and useful concept, referring to a machine's ability to respond to user input with new constructions not foreseen by the programmer. Yet increasingly, people treat computational systems as unknowable black-box systems, writing off the possibility of forming mental models that allow a collaborative relationship between human insight and fast computati...

Dec 05, 201754 min

Chaperone Contracts for Higher-Order Sessions

Hernan Melgratti (University of Buenos Aires, Argentina), gives the first talk in the third panel, Contracts and Sessions, on the 3rd day of the ICFP conference. Co-written by Luca Padovani (University of Turin, Italy). Contracts have proved to be an effective mechanism that helps developers in identifying those modules of a program that violate the contracts of the functions and objects they use. In recent years, sessions have established as a key mechanism for realizing inter-module communicat...

Sep 14, 201718 min