Daan Leijen

I am a member of the Research In Software Engineering (RISE) group and chair of the Programming Languages working group (PLX). Currently, I am interested in the design and application of strong type systems and declarative programming languages, like Haskell. Furthermore, I work on domain specific embedded languages, language design, and compiler technology.

I am currently on the program chair of the ML workshop 2013 -- consider submitting a paper! I am a permanent member of IFIP working groups 2.16 and 2.4, and was chair of the Haskell Symposium steering committee till 2009. I was on the (external) program committee of the Haskell Symposium 2012, OOPSLA'11, the 2010 ML workshop, the ICFP 2009 conference, and 2004 Haskell workshop. I was the organizer and program chair of the 2005 Haskell workshop.

Recent Publications

Daan Leijen, Koka: Programming with Row Polymorphic Effect Types, in Mathematically Structured Functional Programming 2014, EPTCS, 18 March 2014

Sebastian Burckhardt, Daan Leijen, and Manuel Fahndrich, Cloud Types: Robust Abstractions for Replicated Shared State, no. MSR-TR-2014-43, March 2014

Daan Leijen, Koka: Programming with Row-Polymorphic Effect Types, no. MSR-TR-2013-79, 28 August 2013

Thomas Ball, Peli de Halleux, Daan Leijen, and Nikhil Swamy, Increasing Human-Tool Interaction via the Web, in 11th ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering, ACM, June 2013

Sebastian Burckhardt, Manuel Fahndrich, Daan Leijen, and Benjamin P. Wood, Cloud Types for Eventual Consistency, in Proceedings of the 26th European Conference on Object-Oriented Programming (ECOOP), Springer, 15 June 2012

See all publications...

Current Projects

 
 

Concurrent Revisions: The Concurrent Revisions project introduces a novel programming model for concurrent and/or parallel applications. It provides programmers with a simple, yet powerful and efficient mechanism (based on mutable snapshots and deterministic conflict resolution) to execute various application tasks in parallel even if those tasks access the same data and may exhibit read-write or write-write conflicts.

 

There is an experimental Haskell implementation of concurrent revisions available too.

 

Koka is a function-oriented programming language with polymorphic effect inference. It is an experiment to see if effect inference can be used on larger scale programming. The language is strict (as in ML), but seperates pure values from side effecting computations (as in Haskell). Through the effect types, there is also a strong connection to its denotational semantics, where the effect type of each function has a direct translation to the type signature of the denotational function.

 

Try out koka live on the rise4fun website or look at the slides of a talk I gave at Lang.Next (April 2012)

 

        Fcp   

 

The Fcp project studies type inference for First-Class Polymorphism a la System-F. In this project two inference systems are proposed, called HMF and HML which both occupy extremes in the design space of type inference for System-F.

 

Past Projects

     

I am the principal designer and developer of wxHaskell. The goal of the project is to provide an industrial strength GUI library for Haskell, but without the burden of developing (and maintaining) one ourselves. wxHaskell is therefore build on top of

wxWidgets — a comprehensive C++ library that is portable across all major GUI platforms; including GTK, Windows, X11, and MacOS X. Furthermore, it is a mature library (in development since 1992) that supports a wide range of widgets with the native look-and-feel, and it has a very active community (ranked among the top 25 most active projects on sourceforge).

 
 

Parsec is a free monadic parser combinator library for Haskell. Allthough combinator parsing is well known in literature, most libraries are only implemented for personal use or for small research examples. Parsec is designed from scratch as an industrial-strength parser library. 

 

PPrint

 

PPrint is an implementation of the pretty printing combinators described by Philip Wadler [paper]. In their bare essence, the combinators of Wadler are not expressive enough to describe some commonly occurring layouts. The PPrint library adds new primitives to describe these layouts and works well in practice.

[documentation (pdf), library (zip)]

 
DData 

DData is a library of efficient data structures and algorithms for Haskell. I noticed that I used these data structures (and algorithms) a lot but surprisingly, there are not many "off the shelf" libraries available – so, I documented and extended my personal libraries and made them available. The modules are implemented to be easy to use (just import it), efficient (use balanced trees) and fairly complete (lots of operations) and I hope you find them useful for your own projects too. DData is now part of the standard haskell libraries, as Data.Map, Data.Set, Data.Bag, Data.IntMap, and Data.IntSet.

 
Videos
E2E: Concurrent Programming with Revisions
E2E: Concurrent Programming with Revisions
Daan Leijen, Erik Meijer, and Sebastian Burckhardt
01:10:38 · 9 November 2010