A backtracking logic programming monad (http://code.haskell.org/~dolio/)
local seems broken
local
runReader (observeAllT (local (5+) ask)) 0 evaluates to [0] instead of [5]
runReader (observeAllT (local (5+) ask)) 0
[0]
[5]
See https://hub.darcs.net/mikeplus64/logict/patch/0d1f3bd29c4e1d1f6e285eb6f812b4f58c435681 for fix.