My pictureNicolas Pouillard

Doctor in Computer Science


How to contact me

By E-mail:

By IM using my E-mail address with Jabber, Google talk (XMPP)

I blog

I also tweet as npouillard

My GPG public key and an older GPG public key

Research

Research topics

I am particularly interested in the design of programming languages, specifically about functional languages (such as Agda, Haskell and OCaml).

Since September 2008, I am working on safety of languages featuring meta-programming facilities. By meta-programming one means all programs that do manipulate programs. This range from compilers and other code generators (parser generators, boiler plate removers), to theorem provers and proof assistants, but also to static analysis tools and much more.

Technically one tends to focus on a language design, featuring meta-programming as a two levels, heterogeneous language. This means that one can freely declare a new language representation using some kind of advanced data type. One focuses on providing both type safety and binding soundness of the manipulated programs.

On January 13th 2012, I defended my PhD thesis entitled “Namely, Painless: A unifying approach to safe programming with first-order syntax with binders”. All the material: the document, the slides and the development, can be found below. I did my PhD under the direction of François Pottier, at INRIA Paris-Rocquencourt in the Gallium project-team.

Publications

[PhD Thesis] Namely, Painless: A unifying approach to safe programming with first-order syntax with binders (PDF)

[Agda Development] Namely, Painless: The NomPa library (Agda Sources) (Agda Sources Archive)

Nameless, Painless (ICFP 2011) (PDF) (Agda Sources) (Agda Sources Archive) (Haskell) (Haskell Document Archive) (LaTeX)

A Fresh Look at Programming With Names and Binders (ICFP 2010)

Talks

[PhD defense] Namely, Painless: A unifying approach to safe programming with first-order syntax with binders (Paris 7 University) (PDF) (PDF [fr]) (Haskell)

Namely, Painless (At Marburg University, Programming Languages and Software Technology Group) (PDF) (Haskell)

Nameless, Painless (ICFP 2011 in Tokyo, Japan) (PDF) (Haskell)

A Fresh Look at Programming with Names and Binders (ICFP 2010 in Baltimore, Maryland) (PDF) (Haskell Document Archive)

Meta-programming tutorial at CUFP 2010 (PDF) (Haskell)

A Fresh Look at Programming with Names and Binders (Gallium seminar May 2010) (PDF) (LaTeX) (Haskell Document Archive)

Not So Fresh ML (CANS 2009) (PDF) (LaTeX) (Haskell Document Archive)

Posters

Vers des langages plus expressifs et plus sûrs pour la méta-programmation (forum DIGITEO 2011) (PDF) (Haskell)

Unpublished papers

Experience report: Mirroring reFLect to OCaml (Submitted to ICFP 2009) (PDF)

Agda Hacking

NomPa: A library for safe and expressive programming with names and binders.

Agda archive code

Agda archive code + agdai files

Agda HTML code

Abstract

Atoms and de Bruijn indices are two well-known techniques for programming with names and binders. However, using either technique, programming errors are really easy to make. We propose an abstract interface to names and binders that rules out these errors. This interface is implemented as a library in Agda. It allows defining and manipulating term representations in nominal style, in de Bruijn style, in combinations of these styles, and more.

Whereas indexing the types of names and terms with a natural number is a well-known technique to better control de Bruijn indices, we index them with worlds. Worlds are at the same time more precise and more abstract than natural numbers. Via logical relations and parametricity, we are able to demonstrate in what sense our library is safe, and to obtain theorems for free about world-polymorphic functions. For instance, we prove that a world-polymorphic term transformation function must commute with any renaming of the free variables. The proof is entirely carried out in Agda.

Haskell Hacking

HLaTeX: A LaTeX document builder for Haskell

This is a long term project. It is not yet ready for public consumption, however contributions and support would be warmly welcomed. The development takes place on github, feel free to fork and send me pull requests. I already used this library for my latest talks (the .hs/.tar.gz files on this page are examples using this library).

Hackage contributions

I have contributed to these packages as well: data-object, failure, attempt, control-monad-failure, control-monad-attempt.

xmonad is a dynamically tiling X11 window manager that is written and configured in Haskell

My favorite contribution to xmonad (the contribution library to be exact) is the TopicSpace extension. It enables to easily have as many workspaces as there are topics you work on; or launching the right applications in the right directory when you go to a topic with currently no windows.

Contributions to Yi: a text editor written and extensible in Haskell

I maintained the Vim keymap included in Yi for a while, along with some syntax highlighters (OCaml, Literate Haskell, Ott).

Contributions to Darcs: an advanced distributed revision control system

I have contributed a few patches to the project, for instance I have added the hunk-coloring feature.

Talk: Distributed versioning & Darcs

Distributed versioning for everyone (PDF trans) (PDF) (LaTeX) (rslide)

Teaching

In 2009 I assisted François Pottier (giving TDs in french) for his compilation lecture at École Polytechnique (TD material)

OCaml Hacking

Camllexer: A standalone lossless lexer for OCaml like languages

I extracted code from the OCaml/Camlp4 lexers to build a lossless, fault-tolerant, keyword independent, correct and complete (as far as testing goes) for the family of Caml dialects. Get more information at the github page for Camllexer.

ocamlbuild

Talk: OCaml, reFLect and overloading

Overloading, searching for alternatives (PDF) (HTML) (rslide)

Camlp4 bazaar

Ruby Hacking

Contributions to Sup

Sup is a console-based email client for people with a lot of email.

Contributions to Ditz

Ditz work with distributed version control systems.

Rslide: A lightweight LaTeX/HTML generator

Rslide is a single file Ruby program, that I used to write reports and presentations. I now use HLaTeX and TDoc instead.
Download rslide

Uttk: Unified Test Tool Kit

Vcs: A wrapper over Version Control Systems


I'm a Haskeller

View Nicolas Pouillard's profile on LinkedIn

Valid HTML 5.0!Valid XHTML 1.1!Valid CSS!

Powered by Haskell (TDoc)