Thesis submitted

I have submitted my dissertation On Functional Logic Programming and its Application to Testing.

Declarative Programming Overview

I have finished a first draft of an overview on declarative programming. The section on functional programming is almost identical to the version published previously but I have added a section on logic programming features: unbound variables, non-determinism, search, and constraints.

The LP section contains a surprisingly concise solution for the n-queens problem and a lazy implementation of breadth-first search with a circular queue.

more..

FP Overview

I have finished a first draft of a brief overview on functional programming featuring type polymorphism, higher-order functions, lazy evaluation, class-based overloading, and equational reasoning.

comments appreciated!

Reinventing Haskell Backtracking

I have revised my submission to ATPS’09 — a german workshop on programming.

The most important changes are:

  • a simplified implementation of iterative deepening depth-first search and
  • an additional section with experimental results.

There is also an extended one page abstract summarising the work.

more..

Explicit sharing of monadic effects

The paper on Purely Functional Lazy Non-deterministic Programming describes an approach to model lazy functional logic programming in Haskell via explicit sharing of monadic effects. The corresponding project page explains how to install and use our code.

Purely Functional Lazy Non-deterministic Programming

This is joint work with Oleg Kiselyov and Chung-chieh Shan accepted for ICFP’09.

more..

Barefaced pilferage of monadic bind

I had an insightful discussion on haskell-cafe on how to steal the implementation of monadic bind from a continuation monad transformer.

I did it twice, first re-inventing the two-continuation model for depth-first search, then discovering an implementation of breadth-first search that I didn’t know before.

On the go, I used higher-rank infix record selectors for the first time.

In this program I talk about monads for non-determinism, functional lists, continuations, and what you get for free when you combine them.