Wednesday 11 November 2015

MBrace 1.0

My dearest friends at Nessos have just announced their v1.0 release of MBrace, the open source, big-data, cloud programming model (& runtime) for F# and C#.
Learn more about it: http://mbrace.io

Wednesday 20 May 2015

List of PL-related Summer Schools in 2015


I've put together a list with PL-related summer schools. Some deadlines may have passed, but nevertheless I'm putting that here as a placeholder to keep track of summer schools in our field.

Thursday 7 May 2015

Object Algebras Resources

Object algebras is a really cool solution to the expression problem. We have recently used them as a device for implementing extensible stream pipelines (described in the previous post, Streams à la carte).

A good place that someone can start from, to understand object algebras, is the definition of the Expression Problem. The de-facto reference for that is Philip Wadler's 1998 e-mail:

"The expression problem is a new name for an old problem. The goal is to define a datatype by cases, where one can add new cases to the datatype and new functions over the datatype, without recompiling existing code, and while retaining static type safety (e.g., no casts)".

After that, the reader should be able to answer the question: What does the Visitor pattern allow and what does it prevent?. Afterwards, one should read the original paper by Bruno C. d. S. Oliveira and William R. Cook and become familiarize with the idea, via the solutions to the expression problem in various languages. Pick one that you like the most and explore the structure! If the reader is more functional-oriented, a good place to start is from Tagless Interpreters.

In the following, I give some links that provide ample information on object algebras. Let me know if you found a resource useful on the internet and I am going to update the post here for future reference.
 

Bloggers/Discussions/Videos

Papers

    Tuesday 5 May 2015

    Streams à la carte: Extensible Pipelines with Object Algebras

    The final version of our ECOOP15 paper for extensible streams is up!


    We address extensibility shortcomings in libraries for lazy-streaming queries with a new design. The architecture underlying this design borrows heavily from Oliveira and Cook's object algebra solution to the expression problem, extended with a design that exposes the push/pull character of the iteration, and an encoding of higher-kinded polymorphism.

    In biboudis/streamalg you can examine closely how a stream library can be extended in multiple ways. The repository contains all stream implementations discussed in the paper alongside with benchmarks and tests. This is a joint work with Nick Palladinos (@NickPalladinos), George Fourtounis (@gf0ur) and Yannis Smaragdakis (@YSmaragdakis).