Scala, Clojure, Lisp, Haskell, Ocaml, Erlang, F#... whatever your discipline, join 100+ functional experts and data science enthusiasts at the Functional Programming eXchange to discover innovative approaches and practical solutions to common problems.
We have a stunning line-up this year, including leading experts such as John Hughes (CEO of Quiv AB), Kevin Hammond (Professor in Computer Science and Functional Programming research group lead at St. Andrews University) and Philip Wadler (Winner of the POPL Most Influential Paper Award and co-author of Introduction to Functional Programming).
A wide range of Functional topics will be tackled including Paraforming: how to develop effective parallel programs with Kevin Hammond, building your own Lisp with Bodil Stokke, how to create robust real world applications with Scott Wlaschin and many more.
Despite Moore's "law", uniprocessor clock speeds have now stalled. Rather than single processors running at ever higher clock speeds, it is common to find dual-, quad- or even hexa-core processors, even in consumer laptops and desktops.
Haswell, Intel's forthcoming multicore architecture, will have eight cores by default. Future hardware will not be slightly parallel, however, as in today's multicore systems, but will be massively parallel, with manycore and perhaps even megacore systems becoming mainstream.
This means that programmers need to start thinking parallel. To achieve this they must move away from traditional programming models where parallelism is a bolted-on afterthought. Rather, programmers must use languages where parallelism is deeply embedded into the programming model from the outset.
By providing a high level model of computation, without explicit ordering of computations, declarative languages in general, and functional languages in particular, offer many advantages for parallel programming.
One of the most fundamental advantages of the functional paradigm is purity. In a purely functional language, as exemplified by Haskell, there are simply no side effects: it is therefore impossible for parallel computations to conflict with each other in ways that are not well understood.
ParaForming aims to radically improve the process of parallelising purely functional programs through a comprehensive set of high-level parallel refactoring patterns for Parallel Haskell, supported by advanced refactoring tools.
By matching parallel design patterns with appropriate algorithmic skeletons using advanced software refactoring techniques and novel cost information, we will bridge the gap between fully automatic and fully explicit approaches to parallelisation, helping programmers "think parallel" in a systematic, guided way. This talk introduces the ParaForming approach, gives some examples and shows how effective parallel programs can be developed using advanced refactoring technology.
I'm a Professor in Computer Science, in the School of Computer Science, at the University of St. Andrews, St. Andrews, Scotland, where I lead the Functional Programming research group.
Riak is one of the new breed of no-SQL database management systems, which has begun to replace relational databases for some applications. Riak is a distributed key-value store, inspired by Amazon’s Dynamo, designed for applications where scalability, low latency and high availability are critical. Riak uses replication to provide fast access to data, even when multiple nodes or parts of the network fail. It supports concurrent access to the same data by multiple clients, even when the network is partitioned. All of this makes it very hard to test.
Reducing over relationships in graphs takes our data to the next level. Persisting that to the database saves us impedance mismatch and the overhead involved in the mapping. In this session we will talk about Neo4j and how we can use cool ideas from graph theory to get more value from our data.
Amanda Laucher is currently working with Neo Technology, the company behind Neo4j. She is a language geek who is often found ranting about functional languages and great type systems.
We are now used too being roused out of bed by news of the latest serious Internet security alert or major data leak. The software services we now use are tremendously complex, and mash together a complex spectrum of policy and mechanisms. I'll talk about a different approach to building networked services in this talk that cleanly separates both of these, and results in an extremely efficient deployment model that outputs standalone kernels straight from OCaml source code.
Hypervisors such as Xen or VMWare provide a flexible platform to host applications as a set of appliances, e.g., web servers or databases. Each appliance usually contains an OS kernel and userspace processes, within which applications access resources via APIs such as POSIX. It's on top of this layer that you typically write code in your functional programming language of choice.
Our Mirage operating system implements a radically different way of building these applications. Mirage supports the progressive specialisation of OCaml source code, and gradually replaces traditional OS components with type-safe libraries. This ultimately results in "unikernels": sealed, fixed-purpose images that run directly on the hypervisor without an intervening guest OS such as Linux.
Developers no longer need to become sysadmins, expert in the configuration of all manner of system components, to use cloud resources. At the same time, they can develop their code using their usual tools, only making the final push to the cloud once they are satisfied their code works. As they explicitly link in components that would normally be provided by the host OS, the resulting unikernels are also highly compact: facilities that are not used are simply not included in the resulting unikernel.
For example, the self-hosting Mirage web server image is less than a megabyte in size...
Anil is a Horizon Research Fellow at the University of Cambridge. He has worked in a variety of senior architecture, engineering, product management, sales and "whatever it takes" roles in industry
Implement trampolining IO! Traverse to your heart's content! Say "Applicative functor" like you know what it means! You know you want to.
Chris Marshall (@oxbow_lakes) is one of the 22 scala gold-badged users on StackOverflow, although he is unique in being the only undeserving recipient.
We'll charge at high speed through the following topics, with Clojure code to follow along with as we go (because there's no better language for implementing a Lisp than another Lisp)
- Parsing: turning text files into ASTs
- Fundamental Lisp datatypes
- McCarthy's elementary functions.
- Evaluating Lisp code
- Lambdas and lexical scope
- Your friend, the state monad
- Beyond Lisp: pattern matching and type systems
When we're done, you'll be ready to go forth and fill the world with Lisps of all shapes, colours and Greenspun violations for Great Justice. Also, it'll be good fun.
Bodil works as a computer science researcher for a secretive think tank, and is a world renowned expert in varied fields such as pizza and persistent data structures. Contrary to popular rumour, she only has five fingers on each hand, but is still an Emacs user.
How best to blend a domain-specific language into a host language? For the domain of databases, the old question of how to achieve language integrated query is receiving renewed attention, in part because of its support through Microsoft's LINQ framework. Higher-order features prove useful even for constructing first-order queries. We prove a theorem characterising when a host query is guaranteed to generate a single SQL query, and we present experimental results confirming our technique works, even in situations where Microsoft's LINQ framework either fails to produce an SQL query or, in one case, produces an avalanche of SQL queries. Our ideas are implemented in F#, and the talk briefly considers how they might apply to other languages such as Scala and Haskell.
Philip Wadler has contributed to the designs of Haskell, Java, and XQuery, and is a co-author of XQuery from the Experts (Addison Wesley, 2004) and Generics and Collections in Java (O'Reilly, 2006).
Many examples in functional programming assume that you are always on the "happy path". But to create a robust real world application you must deal with validation, logging, network and service errors, and other annoyances. So, how do you handle all this in a clean functional way? This talk will provide a brief introduction to this topic, using a fun and easy-to-understand railway analogy.
Scott has over 20 years experience in software development, design and architecture, covering all aspects of business software.
Build Your Own Lisp for Great Justice
Featuring Bodil Stokke
Implementing a toy Lisp interpreter is practically a rite of passage for the budding computer scientist. This hallowed tradition is described in detail in "Lisp in Small Pieces," the seminal work on the making of Lisps, but everybody loves a tl;dr, so let's do the 40 minute...functional-programming lisp clojure lambda lexical-scope types fpx
Data Science using Functional Programming
Featuring Amanda Laucher
Functional Programming has had it's 15 minutes of fame - again. Now it's data's turn - again. Obviously the best way to stop this cycle is to merge the two. Let's put functional concepts into the database!functional-programming neo4j graph-theory database persistence nosql
Teaching an old dog new tricks: wrapping an imperative API in a functional one
Featuring Chris Marshall
Not so much "standing on the shoulders of giants" as skulking behind them with a notebook and a pen, this talk will demonstrate the construction of a functional Scala DSL to interact with a bespoke Java data source API using a real-life case study.functional-programming applicative-functor applicative io java fpx
My other operating system is a Mirage
Featuring Anil Madhavapeddy
In this talk Anil introduces a different approach to building networked services which cleanly separates policy and mechanisms, an approach which results in an extremely efficient deployment model that outputs standalone kernels straight from OCaml source codefunctional-programming ocaml webserver hypervisor cloud type-safety
Functional Programming eXchange 2015
One day in London
Functional programming has become synonymous with modern development with ever augmenting importance in OO and a proliferation of purely functional languages being evolved today.The Functional Programming eXchange (FPX) recognises the impact of the most innovative and pioneering approaches which...fpx functional-programming scala haskell f# clojure functional
Functional Programming eXchange 2013
One day in London
Would you like to join 100+ experts, developers and thinkers passionate about all things functional? Do you wish to learn and share common challenges and ideas across the different languages of the functional programming paradigm?
The functional programming eXchange brings together the best minds...haskell clojure scala python functional-programming fpx
Functional Programming eXchange 2012
One day in London
Skills Matter is delighted to announce the 3rd annual Functional Programming eXchange on March 16th 2012. Join us for a day of talks, open-space discussions and brainstorming on Functional Programming, to share common challenges in the different languages and lessons learned. Come see talks with...scala clojure haskell lift akka functional-programming
Functional Programming eXchange 2011
One day in London
Following on from the success of the last Functional Programming eXchange in December 2009, Skills Matter is proud to announce the next Functional Programming eXchange, scheduled for March 18, 2011.
Functional Programming eXchange Workshops
In the same week as the Functional Programming eXchange,...scala haskell
Functional Programming eXchange 2009
One day in London
Skills Matter is pleased to organise the first annual Functional Programming eXchange. We hope to bring together the leading innovators in the Functional Programming community with the UK's enterprise developer community, for an informal day of deep technical insight, inspiration, innovation...functional-programming concurrent-programming erlang scala f#