From 4fff8273384eb76473adef9892cdad7b090b869e Mon Sep 17 00:00:00 2001 From: Simon Forman Date: Sat, 30 Jun 2018 23:20:00 -0700 Subject: [PATCH] Extra logging and another lil test. --- joy/utils/polytypes.py | 16 ++++++++++++++++ test/test_type_inference.py | 6 ++++++ 2 files changed, 22 insertions(+) diff --git a/joy/utils/polytypes.py b/joy/utils/polytypes.py index 1c4eb10..cd29265 100644 --- a/joy/utils/polytypes.py +++ b/joy/utils/polytypes.py @@ -153,6 +153,22 @@ class CombinatorJoyType(FunctionJoyType): return new_f[0][1] +def _log_uni(U): + def inner(u, v, s=None): + _log.info( + '%3i %s U %s w/ %s', + len(inspect_stack()), u, v, s, + ) + res = U(u, v, s) + _log.info( + '%3i %s U %s w/ %s => %s', + len(inspect_stack()), u, v, s, res, + ) + return res + return inner + + +@_log_uni def unify(u, v, s=None): ''' Return a tuple of substitution dicts representing unifiers for u and v. diff --git a/test/test_type_inference.py b/test/test_type_inference.py index 17d25c3..2f10558 100644 --- a/test/test_type_inference.py +++ b/test/test_type_inference.py @@ -174,6 +174,12 @@ class TestYin(TestMixin, unittest.TestCase): # ([...1] -- [a2 ...1] [...3] a1) self.assertEqualTypeStructure(infer(*expression), [f]) + def test_stack_dup_ccons(self): + expression = stack, dup, ccons + f = ((a1, s1), ((a1, ((a1, s1), (a1, s1))), s1)) + # (... a1 -- ... [a1 [a1 ...] a1 ...]) + self.assertEqualTypeStructure(infer(*expression), [f]) + ## def test_(self): ## expression = pop, swap, rolldown, rest, rest, cons, cons ## f = -- 2.11.0