def tag(self, source, v): internal = len(self.internal) self.internal[v.id] = internal self.original[internal] = v self.changed[internal] = False self.current[internal] = v self.updates[internal] = updates.trivial() self.source[internal] = source
def propagate_back(s): if s.head == term.because.head: return propagate_back(s['operation']) elif s.head == term.explain.head: return propagate_back(s['operation']) or propagate_back(s['prior']) elif s.head == term.accessing.head: if change.head == updates.trivial.head: parent = s['term'] binding = s['binding'] return self.update( updates.trivial(), parent, repr_change=updates.apply_to_field( representations.referent_of(T.from_str(binding)), repr_change ).explain("tracing backwards from [v]", v=v) ) else: return False elif s.head == askers.answering.head: Q = s['Q'] if Q.head == fields.get_field.head: parent = Q['object'] field = Q['field'] return self.update( updates.apply_to_field(field, change), parent, repr_change=updates.apply_to_field(updates.lift_field(field), repr_change) ) elif Q.head == convert.convert.head: previous = Q['value'] return self.update( change, previous, repr_change=None ) return False
def set_repr(self, v, new_repr): self.update(updates.trivial(), v, repr_change=updates.become(new_repr))
import convert import representations import properties import updates import outlines import builtins import computations import term import termtypes import state import views import functions import strings from term import Term as T k = updates.update(updates.trivial(), T.from_int(0)) d = T('test [a]', a=k) Q = T('a question about [this]', this=k) asker = ask.Asker(Q) a = T('a') b = T('b') c = T('c') l1 = T.from_list([a, b, c]) l2 = T.from_list([a, a, a]) l12 = lists.zip(l1, l2) d = dictionaries.from_items(l12)