[Haskell-cafe] purely functional lazy non-deterministic programming