From 139ab700f791ef6f4098b48a88895597e13beb9d Mon Sep 17 00:00:00 2001 From: Tim Vieira Date: Wed, 10 Jul 2013 19:36:58 -0400 Subject: [PATCH] nonfunctional tweaks to handling of '->'. --- src/Dyna/Backend/Python/interpreter.py | 4 +++- src/Dyna/Backend/Python/stdlib.py | 4 ++-- src/Dyna/Backend/Python/term.py | 10 +++++++--- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/Dyna/Backend/Python/interpreter.py b/src/Dyna/Backend/Python/interpreter.py index 83a2499..ea2b06e 100644 --- a/src/Dyna/Backend/Python/interpreter.py +++ b/src/Dyna/Backend/Python/interpreter.py @@ -78,7 +78,7 @@ from path import path import load, post -from term import Term, Cons, Nil +from term import Term, Cons, Nil, MapsTo from chart import Chart from utils import ip, red, green, blue, magenta, yellow, parse_attrs, \ ddict, dynac, read_anf, strip_comments, _repr, hide_ugly_filename @@ -272,6 +272,8 @@ class Interpreter(object): return Cons(*args) if fn == 'nil/0': return Nil + if fn == '->/2': + return MapsTo(*args) if fn == '$key/1': self.new_fn(fn, '=') diff --git a/src/Dyna/Backend/Python/stdlib.py b/src/Dyna/Backend/Python/stdlib.py index 81c62c9..8327652 100644 --- a/src/Dyna/Backend/Python/stdlib.py +++ b/src/Dyna/Backend/Python/stdlib.py @@ -1,5 +1,5 @@ import re -from term import Term, Cons, Nil +from term import Term, Cons, Nil, MapsTo from collections import Counter from utils import pretty, pretty_print @@ -77,7 +77,7 @@ def todyna(x): #for k,v in x.items(): # c = AList(todyna([k,v]), c) #return c - return todyna(x.items()) + return todyna([MapsTo(k,v) for k,v in x.items()]) elif isinstance(x, (list, tuple)): c = Nil diff --git a/src/Dyna/Backend/Python/term.py b/src/Dyna/Backend/Python/term.py index a9f032b..f8b1e39 100644 --- a/src/Dyna/Backend/Python/term.py +++ b/src/Dyna/Backend/Python/term.py @@ -31,9 +31,6 @@ class Term(object): def __repr__(self): "Pretty print a term. Will retrieve the complete (ground) term." - if self.fn == '->/2': - return '%s -> %s' % self.args - fn = '/'.join(self.fn.split('/')[:-1]) # drop arity from name. if not self.args: return fn @@ -134,3 +131,10 @@ class _Nil(Term): Nil = _Nil() + + +class MapsTo(Term): + def __init__(self, k, v): + super(MapsTo, self).__init__('->/2', (k, v)) + def __repr__(self): + return '%s -> %s' % self.args -- 2.50.1