Unhappy with the conclusion of this article, I began to develop a framework for lazy functional-logic programming in Haskell that allows to compare different search strategies in an in other respects identical environment. Specifically, I aim at comparing complete strategies like breath-first search or FBackTrack (cf. aforementioned articel) w.r.t. their run-time and memory requirements. Unlike described earlier, the combination of laziness and nondeterminism should conform to Call-Time Choice semantics without prohibiting compiler optimizations due to side effects.

uncommented sources to play with:

  • examples.hs — examples from this article and more
  • FLP.hs — combinators for lazy functional-logic programming
  • SearchTree.hs — search trees with breath first search
  • Fresh.hs — different implementations of fresh references
  • OwnUnique.hs — unique integer supply with unsafeInterleaveIO