Ejemplo n.º 1
0
    def test_unifies(self):
        self.assertFalse(pyson.unifies(True, 1))

        self.assertTrue(pyson.unifies(3, 3.0))
        self.assertTrue(pyson.unifies(True, True))
        self.assertTrue(pyson.unifies(5, pyson.Wildcard()))
        self.assertTrue(pyson.unifies((1, 2), (1, pyson.Wildcard())))
        self.assertTrue(pyson.unifies(("hello", 2), ("hello", pyson.Var())))

        self.assertTrue(pyson.unifies(pyson.Var(), pyson.Literal("beep")))
        self.assertTrue(pyson.unifies(pyson.Literal("boop"), pyson.Var()))

        X = pyson.Var()
        self.assertTrue(
            pyson.unifies(pyson.Literal("foo", (X, X)),
                          pyson.Literal("foo", (1, 1))))
        self.assertFalse(
            pyson.unifies(pyson.Literal("bar", (X, X)),
                          pyson.Literal("bar", (1, 2))))
Ejemplo n.º 2
0
    def visit_variable(self, ast_variable):
        try:
            return self.variables[ast_variable.name]
        except KeyError:
            if ast_variable.name == "_":
                var = pyson.Wildcard()
            else:
                var = pyson.Var()

            self.variables[ast_variable.name] = var
            return var
Ejemplo n.º 3
0
 def visit_binary_op(self, ast_binary_op):
     return pyson.Wildcard()