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.


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.

Faster Non-deterministic programs with explicit parallelism

What does this chart mean?

yellow bars

find out!

Fair conjunction and disjunction

How can you write a Haskell predicate that detects (without diverging) that both of these two infinite trees are unsorted?


Using SmallCheck to Shatter an Audacious Claim

Today I played with SmallCheck. Interested in what happened when I tried to find a small unsatisfiable boolean formula that is not easily detected as such? Watch my attempts! (strip .html suffix for executable Haskell file)


Fun with Infinite Global Constants

I just wrote a tiny little Haskell program that demonstrates a small trick: how to use an infinite global constant to speed up tree-recursive functions. Remove .html from it’s URL to download an executable Haskell file.

comments on reddit