An implementation of miniKanren in Haskell