def run(n, x, *goals, **kwargs): """ Run a logic program. Obtain n solutions to satisfy goals. n - number of desired solutions. See ``take`` 0 for all None for a lazy sequence x - Output variable goals - a sequence of goals. All must be true >>> from logpy import run, var, eq >>> x = var() >>> run(1, x, eq(x, 1)) (1,) """ results = (reify(x, s) for s in goaleval(lallearly(*goals))({})) return take(n, unique(results, key=multihash))
def test_take(): assert take(2, range(5)) == (0, 1) assert take(0, range(5)) == (0, 1, 2, 3, 4) seq = range(5) assert take(None, seq) == seq
def test_take(): assert take(2, range(5)) == (0, 1) assert take(0, range(5)) == (0, 1, 2, 3, 4) assert take(None, range(5)) == range(5)