The International Conference on Functional Programming (ICFP) is a research conference. The attendees are mostly professors and graduate students, but some attendees work in industry, some attendees are undergraduates, and some attendees don’t fit into those easy categories.
The main program at ICFP (Monday through Wednesday) consists of short talks by the authors of newly published papers. Getting a paper presented at ICFP is prestigious. Papers presented at ICFP have been accepted to a journal, The Proceedings of the ACM on Programming Languages, which serves usual roles of a scientific journal: facilitating the exchange of ideas, archiving research results, and building researchers’ reputations and careers. Although the content of a research paper is often dense and written for experts who have some specific technical background, a presentation at ICFP can be more approachable. The speaker is advertising the work to a larger audience and will generally leave technical details to the paper.
ICFP is not about any particular programming language, and it takes a broad view of functional programming. The conference is the traditional home of the Haskell, ML, and Scheme/Lisp language families, and ICFP 2018 hosts workshops and symposia oriented to Erlang, Haskell, Scala, ML, OCaml, and Scheme. The main conference features research spanning those languages and more. Overall, the conference brings together researchers who work on the fundamentals of functional programming, which can be applied in any programming language. At ICFP, you’ll find researchers who developed many key ideas in functional programming languages—including, in many cases, the language developers themselves.
To get the most out of attending ICFP, it pays to understand the intended audience and structure of the various parts, since the full ICFP meeting (from Sunday to Saturday) is quite varied:
-
Talks at the main event (Monday-Wednesday) are aimed at the most general audience of researchers. Keynote talks, at the start of each day, are intended for an especially general audience.
-
Talks at the affiliated workshops and symposia (Sunday, Thursday-Saturday) are more specialized. They are often organized around specific languages (e.g., Erlang, Haskell, Scala) but a workshop might also be organized around an idea or theme. Check out each event’s web page for more information.
- The Workshop on Functional Art, Music, Modelling and Design (FARM) on Saturday 9/29,
- The Erlang Workshop on Saturday 9/29,
- The Workshop on Functional High-Performance Computing (FHPC) on Saturday 9/29,
- The Haskell Symposium on Thursday and Friday 9/27-28,
- The Scala Symposium on Friday 9/28
- The ML Workshop on Friday 9/28
- The Scheme Workshop on Friday 9/28
- The OCaml Users and Developers Workshop on Thursday
- The Numerical Programming in Functional Languages (NPFL) Workshop on Thursday
- The Type-Driven Development (TyDe) Workshop on Thursday 9/27
- The HOPE workshop on higher-order effectful programs on Sunday 9/23,
- The Programming Languages Mentoring Workshop (PLMW) on Sunday 9/23,
- The Haskell Implementors’ Workshop (HIW) on Sunday 9/23.
- A tutorial (Thursday-Saturday) offers hands-on introduction to a specific topic or language. Unlike other parts of ICFP, where attendees drop in and out from talk to talk, attendees at tutorials are generally expected to spend a half day working through ideas on their laptops. Check out each website for more information:
- Abstracting Gradual Typing: A Systematic Approach to Designing Gradually Typed Languages
- Beluga: Programming Proofs About Formal Systems
- Direct Manipulation Programming in Sketch-n-Sketch (or perhaps: How to Program Your Documents in Sketch-n-Sketch and Directly Manipulate Them, Too)
- Getting Satisfaction out of Games: Learning to use SAT solvers through puzzles and games
- Hop.js: JavaScript multitier programming
- Implement your own reactive language: the ReactiveML experiment
- Introduction to Programming and Proving in Cedille
- Pijul, a purely functional version control system.
- Purely functional UIs with Reacl
- Writing a chat system in Pony