From: Tim Vieira Date: Wed, 10 Jul 2013 23:36:58 +0000 (-0400) Subject: nonfunctional tweaks to handling of '->'. X-Git-Url: https://hydra-www.ietfng.org/gitweb/?a=commitdiff_plain;h=139ab700f791ef6f4098b48a88895597e13beb9d;p=dyna2 nonfunctional tweaks to handling of '->'. --- 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